2010-07-26 25 views
1

我有一個像使用多個條件Mysql的選擇數據

id fid 
20 53 
23 53 
53 53 

表在這裏,我需要在我的條件是一樣的東西.. where fid=53 and id in(20,23,53) ,也是我需要返回false時....where fid=53 and id in(20,24,53)返回true。 但上述條件不滿足我的要求。兩個查詢返回相同的值(真)。請幫助我前進。

+1

呃,這兩個查詢都有有效的數據,這可能是爲什麼你對這兩個查詢都成立的原因...... – Amber 2010-07-26 05:37:11

回答

3

我相信你問的是查詢發現,與所有值20,23,53關聯,如果沒有,那麼FID沒有被查詢返回的FID。

在SQL中有兩種常見的解決方案。

首先,我建議MySQL的一個:

SELECT t1.fid 
FROM mytable t1 
JOIN mytable t2 ON t1.fid = t2.fid 
JOIN mytable t3 ON t1.fid = t2.fid 
WHERE (t1.id, t2.id, t3.id) = (20,23,53); 

下面是通過代替自連接使用組另一種解決方案,但往往在MySQL的表現更差:

SELECT t.fid 
FROM mytable t 
WHERE t.id IN (20,23,53) 
GROUP BY t.fid 
HAVING COUNT(*) = 3; 
0

也許是一個子查詢?

SELECT id, fid FROM table 
WHERE fid = 53 AND 
id IN (SELECT id FROM table WHERE id IN(20,24,53)) 
0

根據您的示例條件,它不可能與單個查詢:(。 因爲where fid=53 and id in(20,23,53)返回true爲fid = 53和id = 20,53 同樣,where fid=53 and id in(20,24,53)爲fid = 53和id = 20,53爲false

唯一的區別是關於id = 23和id = 24。所以你可以用兩個不同的查詢來完成。但有時他們會爲相同的數據返回true和false。

我認爲你需要再次考慮你的問題。