2011-04-03 34 views
-1

連接兩個表中的MySQL與第一條件

id_look  id_first name 
1   1   Jhon 
2   2   Mark 
3   3   Mike 

id  id_first  surnames 
1  2   AAA 
2  2   BBB 
3  2   CCC 
4  1   DDD 
5  1   AAA 
6  1   BBB 
7  3   BBB 

我想所有id_look(相同id_first)如果姓AAABBB

所以結果應該是:

id_look 
1 
2 

,因爲只有id_look包含AAABBB在同一時間。

+1

那麼,最新情況如何? – KingCrunch 2011-04-03 01:01:10

+0

很難理解你的問題。 – Eliasdx 2011-04-03 01:02:12

+0

如果你可以更具體一些...... – linus72982 2011-04-03 01:03:54

回答

5
SELECT id_look 
FROM `first` f 
     JOIN `second` s 
     ON s.id_first = f.id_first 
WHERE surnames IN ('AAA', 'BBB') 
GROUP BY id_look 
HAVING COUNT(DISTINCT surnames) = 2; 
+0

Cleane'n更好,但你應該適當反撥;) – Christian 2011-04-03 01:30:35

+0

在這個scenerio很好的作品,但如果在姓氏會有數字,我想檢查它是否在範圍內,所以例如我想檢查姓是> 20和<50,如果是BBB – DevSoft 2011-04-03 01:52:42

+0

的數字又是姓氏? – 2011-04-03 02:04:21

1

這有點難看,但它會做你所問的。

select id_look 
from first 
    inner join second as second_aaa 
    on second_aaa.id_first = first.id_first 
    and second_aaa.surnames = 'AAA' 
    inner join second as second_bbb 
    on second_bbb.id_first = first.id_first 
    and second_bbb.surnames = 'BBB' 
+0

+1不難看得到。 – 2011-04-03 08:19:15

+0

當我多次加入同一張桌子時,我發抖。 。因此,爲什麼我認爲它很醜陋......)但是,它確實有效......如果我們將「CCC」和「DDD」添加到條件中,Martin的方法更具前瞻性,好。 – squawknull 2011-04-03 22:43:38