Mysql使用多个条件选择数据

标签 mysql sql-match-all

我有一张 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/

相关文章:

php - 在 PHP 和 MySQL 方面需要帮助

mysql cross join 进不去?

sql - 什么是用于选择项目/属性列表中具有多个属性的项目的 SQL 语句?

mysql - SQL选择基于多行键的两部分组合键的一半?

php - 要在同一页面中显示的复选框值

php - mysql 将值插入表中?

mysql - sql中两个表的列求和

php - json_encode 传递空值

mysql - 连接 3 个表 SQL