我有一個像使用多個條件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。 但上述條件不滿足我的要求。兩個查詢返回相同的值(真)。請幫助我前進。
我有一個像使用多個條件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。 但上述條件不滿足我的要求。兩個查詢返回相同的值(真)。請幫助我前進。
我相信你問的是查詢發現,與所有值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;
也許是一個子查詢?
SELECT id, fid FROM table
WHERE fid = 53 AND
id IN (SELECT id FROM table WHERE id IN(20,24,53))
根據您的示例條件,它不可能與單個查詢:(。 因爲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。
我認爲你需要再次考慮你的問題。
呃,這兩個查詢都有有效的數據,這可能是爲什麼你對這兩個查詢都成立的原因...... – Amber 2010-07-26 05:37:11