[SQL ] JOIN如何不抓出重複的資料

看板Database作者 (Harmonic Inspirations)時間7年前 (2017/01/07 13:18), 7年前編輯推噓3(3013)
留言16則, 4人參與, 最新討論串1/1
(針對 SQL 語言的問題,用這個標題。請用 Ctrl+Y 砍掉這行) 資料庫名稱:Microsoft SQL Server 資料庫版本:2014 內容/問題描述: 如表A       表B ID   Status    ID  Status 張三 1      張三 1 李四 2      李四 1       王五 2      王五 2 SELECT (SELECT 表A.ID From 表A JOIN 表B ON 表A.ID = 表B.ID WHERE 表A.Status = 2 AND 表B.Status = 1) AS 2 (因為需要很多欄位顯示狀態(如2)但問題都一樣,所以以下省略) 產生結果: 李四 李四 請問: 1. 為何李四出現二次? 2. 如何只讓李四出現一次? 3. 若是SELECT COUNT(表A.ID),如何顯示1?(即只算李四一個) 謝謝 -- -- ※ 發信站: 批踢踢實業坊(ptt.cc), 來自: 60.245.65.133 ※ 文章網址: https://www.ptt.cc/bbs/Database/M.1483766297.A.2BD.html

01/07 18:15, , 1F
照你的打是只有李四
01/07 18:15, 1F

01/07 19:01, , 2F
會出現二次李四,但我只要一次
01/07 19:01, 2F

01/07 19:35, , 3F
我照你的規格跟語法來測試,的確只有李四一筆,還是你
01/07 19:35, 3F

01/07 19:35, , 4F
本身資料有重複?
01/07 19:35, 4F
原本的表A與表B的欄位都一樣,如: 如表A            表B ID   Status Car Color Man  ID  Status… 張三 1   ss cs  mf  張三 1 李四 2   ss cf  mf  李四 1       王五 2   ss cf  mw  王五 2 這是原本的程式內容: SELECT (SELECT 表A.ID From 表A JOIN 表B ON 表A.ID = 表B.ID WHERE 表A.Car = 'ss' AND 表A.Color = 'cf' AND 表A.Status = '2' AND 表A.Man = 'mf' AND 表B.Status = 1) AS 2, 出現李四二筆的情況(確認過表A與表B分別各只有一個李四) 但應該不論篩選多少表A的條件,應該都是只有一筆 ※ 編輯: Talenius (220.137.116.33), 01/07/2017 20:43:54

01/07 20:52, , 5F
妳可以加一下inner 不過結果因該一樣,但你的語法沒問
01/07 20:52, 5F

01/07 20:52, , 6F
體,你可以自己就用這個範例打看看,就是你想要的結果!
01/07 20:52, 6F

01/07 20:52, , 7F
!
01/07 20:52, 7F

01/07 21:15, , 8F
改成INNER JOIN,仍然是一樣的錯誤
01/07 21:15, 8F

01/08 15:45, , 9F
sql沒問題,肯定是你資料面有漏
01/08 15:45, 9F

01/08 15:45, , 10F

01/08 15:46, , 11F
要碼表A李四符合條件的 有兩筆 或是表B有兩筆
01/08 15:46, 11F

01/08 16:05, , 12F
或是試著join欄位那邊 加上定序讓他相同(collate)
01/08 16:05, 12F

01/09 07:20, , 13F
感謝L大與T大的幫忙,重新載入資料後匯出資料就對了
01/09 07:20, 13F

01/09 07:21, , 14F
我不確定為何之前同個csv檔會匯入二次
01/09 07:21, 14F

01/09 07:21, , 15F
感謝各位的幫忙
01/09 07:21, 15F

02/16 09:25, , 16F
好歹設個primary key 或unique constraint 嘛
02/16 09:25, 16F
文章代碼(AID): #1OS7ePAz (Database)