[SQL ] 關於資料的選取

看板Database作者 (棒球癡)時間15年前 (2010/09/16 00:08), 編輯推噓1(103)
留言4則, 3人參與, 最新討論串1/1
各位版大好,小弟是剛接觸SQL不久的新手 使用的DBMS是ACCESS 目前碰到一個問題 有兩個資料表長下面這樣 TABLE 1 TABLE2 ID1 c1 c2 c3 ID1 ID2 ============================= ============== 1 1-c1 1-c2 1-c3 1 A 2 2-c1 2-c2 2-c3 1 B 3 3-c1 3-c2 3-c3 1 C 4 4-c1 4-c2 4-c3 3 A 5 5-c1 5-c2 5-c3 3 C 4 B 5 A 5 B 我使用這樣的指令 SELECT * FROM t1 LEFT OUTER JOIN t2 ON t1.ID1 = t2.ID1 JOIN出來的資料表長這樣(先當作TABLE3) TABLE 3 ID1 c1 c2 c3 ID2 ==================================== 1 1-c1 1-c2 1-c3 A 1 1-c1 1-c2 1-c3 B 1 1-c1 1-c2 1-c3 C 2 2-c1 2-c2 2-c3 null 3 3-c1 3-c2 3-c3 A 3 3-c1 3-c2 3-c3 C 4 4-c1 4-c2 4-c3 B 5 5-c1 5-c2 5-c3 A 5 5-c1 5-c2 5-c3 B 我想要取得黃色的那幾列資料 也就是以ID1當分組,ID2不包含C但是有含NULL的那幾列 我把原本的指令加上 WHERE ID2 <> 'C' OR ID2 IS NULL 得到的結果是這樣 ID1 c1 c2 c3 ID2 ==================================== 1 1-c1 1-c2 1-c3 A 1 1-c1 1-c2 1-c3 B 2 2-c1 2-c2 2-c3 null 3 3-c1 3-c2 3-c3 A 4 4-c1 4-c2 4-c3 B 5 5-c1 5-c2 5-c3 A 5 5-c1 5-c2 5-c3 B 後來另外建了一個跟TABLE3一樣的資料 試著用 GROUP BY 加上 HAVING 的用法 SELECT ID1, c1, c2, c3 FROM table3 GROUP BY ID1, c1, c2, c3 HAVING COUNT(ID2 <> 'C') > 0 得到的結果是這樣 ID1 c1 c2 c3 ============================= 1 1-c1 1-c2 1-c3 3 3-c1 3-c2 3-c3 4 4-c1 4-c2 4-c3 5 5-c1 5-c2 5-c3 想要的結果應該是這樣 ID1 c1 c2 c3 ============================= 2 2-c1 2-c2 2-c3 4 4-c1 4-c2 4-c3 5 5-c1 5-c2 5-c3 稍微修改了一下SQL指令 SELECT ID1, c1, c2, c3, COUNT(ID2 <> 'C') FROM table3 GROUP BY ID1, c1, c2, c3 ID1 c1 c2 c3 COUNT(ID2<>'C') =============================================== 1 1-c1 1-c2 1-c3 3 2 2-c1 2-c2 2-c3 0 3 3-c1 3-c2 3-c3 2 4 4-c1 4-c2 4-c3 1 5 5-c1 5-c2 5-c3 2 查了一下發現COUNT()裡面只能寫欄名,不能寫判斷式的樣子 請問各位版大SQL要怎麼下,才能得到我想要的結果 有勞各位版大了 <(_ _)> -- ※ 發信站: 批踢踢實業坊(ptt.cc) ◆ From: 114.39.172.135

09/16 22:59, , 1F
有匯總函數時請用Having
09/16 22:59, 1F

09/18 00:33, , 2F
SELECT * FROM table3 WHERE id1 NOT IN(SELECT id1 FROM
09/18 00:33, 2F

09/18 00:38, , 3F
table3 WHERE ID2='C')
09/18 00:38, 3F

09/18 16:22, , 4F
謝謝樓上,我解決了 <(_ _)>
09/18 16:22, 4F
文章代碼(AID): #1CaE-3D8 (Database)