2016-11-01 296 views
-1

1臺MySQL查詢選擇

GroupID MemberID Name 
    1  1  ---  
    1  23  ---  
    2  1  ---  
    2  23  ---  
    2  24  ---  
    3  1  ---  
    3  24  ---  

第二臺

ID MemberCount GroupName 
1  2   --- 
2  3   --- 
3  2   --- 

現在我想

select the GroupID where MemberID = (1 and 23) and MemberCount = 2 

我使用MySQL和交叉而我該怎麼不能用這樣做

+1

'MEMBERID? –

+0

不,它會選擇組號爲1,2,3的,因爲全部有1或23個 –

+0

哦。所以你需要使用這兩個ID的用戶?然後'基本上在(1,23)有count(memberid)= 2'的地方。 –

回答

2
SELECT a.groupID 
FROM table1 a 
, table2 b 
WHERE b.id = a.groupID 
AND b.MemberCount = 2 
AND a.MemberId in (1,23) 
HAVING COUNT(DISTINCT(MemberId)) >= 2; 
+0

這是回報1,1,3,但我需要1 –

+0

它錯了我更新了答案,現在嘗試。 –

0

這應該工作...我猜的名字。在(1,23)`

SELECT g.id 
FROM group g 
WHERE g.membercount = 2 
AND EXISTS (SELECT null FROM user_group ug WHERE ug.groupid = g.id AND ug.memberid = 1) 
AND EXISTS (SELECT null FROM user_group ug WHERE ug.groupid = g.id AND ug.memberid = 23) 
0
select GroupID from table1 inner join table2 on table1.GroupID=table2.ID where MemberCount=2 and MemberID in (1,23); 
+0

此查詢僅返回1 –

+0

IN運算符采用逗號分隔的值列表,在您的答案中,「1和23」將被視爲導致答案1的表達式 - 因此查詢的最後部分基本上是「 (1)中的MemberID「。這導致查詢返回1和3 - 不只是1. – PaulF

+0

對不起,只是一個簡單的錯誤 –