我有一张 table
id fid
20 53
23 53
53 53
这里,当我的条件类似于 .. where fid=53 and id in(20,23,53)
时,我需要返回 true
而且我还需要返回 false when.... 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);
这是另一个使用 group by 而不是自连接的解决方案,但在 MySQL 中往往表现更差:
SELECT t.fid
FROM mytable t
WHERE t.id IN (20,23,53)
GROUP BY t.fid
HAVING COUNT(*) = 3;
关于Mysql使用多个条件选择数据,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3332407/