看板 Database 關於我們 聯絡資訊
※ 引述《andreli (小狗跟正妹是我的死穴)》之銘言: : 標題: [SQL ] 重複table欄位名稱 Duplicate column name: : 最近在修改一個網站, 使用MySQL 5.1.36: : 在select的時候, 因為原作者在很多資料表上都使用相同名稱, : 像是每個資料表的流水號都叫sn : 所以我在select join兩個資料表的時候因為都使用*來當作欲選取欄位(就是全選), : 我自己猜想是不是因為這樣的關係產生出Duplicate column name 'sn'的錯誤訊息。 : 如果想要解決, 有什麼好方法嗎? : 還是只能一個一個慢慢select出來, 不要使用*呢? : 謝謝各位前輩的回覆。 : : -- : ※ 發信站: 批踢踢實業坊(ptt.cc) : ◆ 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 p.*, m.* 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 上面是接手人家的程式慢慢找出來可能發生錯誤的地方的原始碼, 錯誤代碼和訊息是1060的Duplicate column name 'sn_' 我將SQL中sub select p.*,m.*的部份改成m.sn_, m.id...就可以正常select了, 兩個資料表中欄位的流水號auto increasement都是叫sn_, 我一開始也是往別名錯誤的地方想, 可是收設了還是不行。 不知道各位前輩有沒有別的想法或看法呢? 另外我想問, 所有的資料表流水號叫sn_這樣的設計方法好嗎? 因為就我自己之前設計時, 每個資料表的流水號名稱都會取跟資料表名稱有關, 像是member_detail, 我就會取md_sn或md_id這樣子, 讓我之後好分辨與取值, 但是原本製作這程式的也算一間有點規模的公司, 想請問各位前輩, 這樣製作上有什麼好處呢? 還是它在搭配smarty有啥好處呢? 謝謝各位前輩的指教, 謝謝! -- ※ 發信站: 批踢踢實業坊(ptt.cc) ◆ From: 221.120.1.190