我的查询需要稍微更具体
问题描述:
问题是'列出所有不具有metertype属性的高级“ 已安装的pid。在答案中使用子查询。我的查询需要稍微更具体
这是我想出了
SELECT PROPERTYMETER.pid, METERTYPE.description
FROM PROPERTYMETER , METERTYPE
WHERE PROPERTYMETER.metertype = METERTYPE.metertype
AND description IN (SELECT description FROM METERTYPE WHERE description = 'conventional')
这将查询的结果我得到
结果是一个事实,即所有的好一边PID 9具有常规和高级的类型,所以我没有真正正确回答这个问题。我可以做什么我的查询,以确保只返回的PID有metertype常规?
答
使用子查询获取metertype = 'advanced'
的所有属性中的pid
。然后使用NOT IN
将它们排除在最终结果之外。
SELECT DISTINCT pid
FROM propertymeter
WHERE pid NOT IN (
SELECT pid
FROM propertymeter AS p
JOIN metertype AS m ON p.metertype = m.metertype
WHERE m.description = 'advanced')
将您的代码发布为纯文本而不是图片。有关代码格式帮助,请参阅https://*.com/help/formatting。 – Barmar
获取所有具有'metertype = advanced'的属性的'pid'。然后用'NOT IN'测试排除它们。 – Barmar
做到了这一点,它的工作完美,谢谢! – kr1s