[SQL ] 請教撈兩個table不重複的語法

看板Database作者 (yida)時間15年前 (2010/07/04 15:33), 編輯推噓5(504)
留言9則, 6人參與, 最新討論串1/1
大家好, 小弟現在有兩個Table, 一個Table存放地區的基本資訊,並使用ID做為Primary Key 另一個Table則是存放此地區的相關屬性,例如圖片、影片位置等, 也使用ID做為FK, 但現在有個問題就是Table B有存放5個Table A的資料, 我如果使用select a.name from a,b where a.id=b.id 會出現在五筆資料, 但其實我只要一筆而已,因為我只是要判斷此地方是否有無相關資訊, 想請問各位, 這有辦法使用SQL語法處理嗎? 因為我目前是用程式去額外判斷處哩, 但這樣似乎顯得很沒效率。 btw DBMS id M$ SQL 2008, thx. ========================================= 抱歉可能敘述不夠詳細, 我的目的是一個地區會有很多故事內容, 每個故事內容都會有相對應的影片或是圖片檔案, 因為我會這樣的詢問是因為在做搜尋的時候, 我如果用select a.name from a,b where a.id=b.id 就可能會找到五筆資料, search list會出現五筆相同的資料, 因為這個地區有五個故事內容, 但其實我只是想知道這個地區有無相關資料而已, 我目前使用的是select dintinct a.name form a,b where a.id=b.id 可以解決問題, 但我想了解是否有更好的解法或是更好的DB schema Thx. -- ※ 發信站: 批踢踢實業坊(ptt.cc) ◆ From: 140.134.26.1

07/04 16:07, , 1F
如敘述~本身設計很怪
07/04 16:07, 1F
※ 編輯: yida0926 來自: 140.134.26.1 (07/04 16:51)

07/05 00:33, , 2F
知道後呢? 話說DISTINCT通常在資料很多時 會很科科科的
07/05 00:33, 2F

07/05 07:27, , 3F
如果只是要知道"有無"資料, 可以用 exist
07/05 07:27, 3F

07/05 18:10, , 4F
table b同一個id有五筆,那id要怎麼當table b的PK?
07/05 18:10, 4F

07/05 18:21, , 5F
對不起我看錯了,是FK
07/05 18:21, 5F

07/05 19:21, , 6F
如果只是想知道有無資料 可以用COUNT(1) 條件用IN...
07/05 19:21, 6F

07/06 02:51, , 7F
select name from a where exists (select 1 from b
07/06 02:51, 7F

07/06 02:55, , 8F
where b.ID = a.ID)
07/06 02:55, 8F

07/06 17:31, , 9F
謝謝各位,已成功解決問題^^
07/06 17:31, 9F
文章代碼(AID): #1CC3atqr (Database)