看板 Database 關於我們 聯絡資訊
※ 引述《andreli (小狗跟正妹是我的死穴)》之銘言: : ※ 引述《andreli (小狗跟正妹是我的死穴)》之銘言: : : 標題: [SQL ] 重複table欄位名稱 Duplicate column name: : : 最近在修改一個網站, 使用MySQL 5.1.36: : : 在select的時候, 因為原作者在很多資料表上都使用相同名稱, : : 像是每個資料表的流水號都叫sn : : 所以我在select join兩個資料表的時候因為都使用*來當作欲選取欄位(就是全選), : : 我自己猜想是不是因為這樣的關係產生出Duplicate column name 'sn'的錯誤訊息。 : : 如果想要解決, 有什麼好方法嗎? : : 還是只能一個一個慢慢select出來, 不要使用*呢? : : 謝謝各位前輩的回覆。 : : -- : : ◆ From: 221.120.65.208 : : 推 rushcat:SELECT TableA.*, TableB.* FROM ... 這樣可以嗎? 10/29 16:19 : : → grence:select應該沒問題,大概是where, order或哪要比對造成混淆 10/29 18:44 : : → andreli:一樓說的方法不行, 我最後使用一個一個列出就可以了... 10/29 22:16 : : 推 rushcat:應該是二樓說的 不然alias設好 不應該會出現這種問題阿@"@ 10/29 23:01 : 我列一下原始的SQL, : --SELECT COUNT(*) _count_ FROM ( SELECT COUNT(1) _count_ FROM ( : -- SELECT p.*, m.* FROM cmn_product p SELECT p.product_hits FROM cmn_product p : JOIN cmn_member m ON p.owner_ = m.sn_ : WHERE p.enabled_ = 1 AND p.visible_ = 1 AND m.enabled_ = 1 AND : m.verify_ = 1 AND m.advance_ = 1 : GROUP BY m.name_ : ORDER BY p.product_hits DESC : ) t 你的問題我沒碰過。 不撈沒用到的欄位通常是好習慣, 但是我不知道你的狀況,憑感覺亂寫的,不一定能用… 欄位名稱重複很常見,命名太有創意有時是困擾。 但是,JOIN... p.owner_ = m.sn_ 這有點怪,兩個表的 sn_是不一樣的東西? 我也不知道最後都加底線有什麼用 : 上面是接手人家的程式慢慢找出來可能發生錯誤的地方的原始碼, : 錯誤代碼和訊息是1060的Duplicate column name 'sn_' : 我將SQL中sub select p.*,m.*的部份改成m.sn_, m.id...就可以正常select了, 這很謎.... 改了之後有另給別名嗎? m.sn_ sn1, p.sn_ sn2 ...之類的? : 兩個資料表中欄位的流水號auto increasement都是叫sn_, : 我一開始也是往別名錯誤的地方想, 可是收設了還是不行。 : 不知道各位前輩有沒有別的想法或看法呢? : 另外我想問, 所有的資料表流水號叫sn_這樣的設計方法好嗎? : 因為就我自己之前設計時, 每個資料表的流水號名稱都會取跟資料表名稱有關, : 像是member_detail, 我就會取md_sn或md_id這樣子, 讓我之後好分辨與取值, : 但是原本製作這程式的也算一間有點規模的公司, : 想請問各位前輩, 這樣製作上有什麼好處呢? 還是它在搭配smarty有啥好處呢? : 謝謝各位前輩的指教, 謝謝! -- ※ 發信站: 批踢踢實業坊(ptt.cc) ◆ From: 61.229.201.238
andreli:對, 他兩個表的sn_不一樣...所有表的流水號都叫sn_...>"< 11/02 00:09