sql - SQL WHERE 在一列中查找 2 个数据
问题描述
我有 2 张桌子
物品:
name
id
other
部分:
name_part
id
other
我希望进行查询以查找与 name_part = 'a' AND name_part = 'b' 链接的项目
同一物品中有 2 个不同的部分
询问:
SELECT item.name
FROM item
INNER JOIN table1 ON item.id = part.id
WHERE part.name_part = 'a' AND part.name_part = 'b'
输出我们'0'
也许嵌套WHERE
?
我试过了,但我找不到如何让它工作。
PS:我已经问过一个类似的问题,但它非常不精确。
解决方案
你可以用 EXISTS 做到这一点:
SELECT i.name
FROM item i
WHERE
EXISTS (SELECT 1 FROM part p WHERE p.id = i.id and p.name_part = 'a')
AND
EXISTS (SELECT 1 FROM part p WHERE p.id = i.id and p.name_part = 'b')
或加入表,按项目分组并在have子句中设置条件:
SELECT i.name
FROM item i INNER JOIN part p
ON i.id = p.id
WHERE p.name_part IN ('a', 'b')
GROUP BY i.name
HAVING COUNT(DISTINCT p.name_part) = 2
尽管我使用了您的示例数据中的列名,但我相信表中的列id
应该part
重命名为类似的东西,item_id
因为它引用id
了item
.
推荐阅读
- package - 如何在用于部署的服务结构应用程序包中包含发布配置文件和应用程序参数?
- c# - C# 继承 AutoCompleteStringCollection 并添加“包含”过滤器
- python - Keras BatchNormalization 是否正常工作?
- r - 在 R 的 for 循环中模拟函数
- python - 如何修复此方法以返回节点在位置 i 与其他节点建立的所有连接
- node.js - 使用 chai-http 为节点服务运行 Mocha 测试用例时出错
- java - 错误:/Applications/Xcode.app/Contents/Developer/usr/bin/make:无效选项——a
- scala - Spark 不会为 IN 子查询注入过滤器“isnotnull”
- xamarin.forms - 如何在 MSBuild 中为 TargetFramework 设置操作系统条件
- ubuntu - 将 Kubuntu 从 20.10 升级到 21.04 后,图标和小部件消失了