我有两个表,一个表包含唯一的名称(bill\u datatypes),另一个表表示这些名称连接到一些子类别(一个名称也可以连接到更多类别)。
第一张表(相关部分):
第二张表(相关部分):
我想选择所有尚未连接到特定子类别的名称。这意味着这些名称可能会在连接表中被提及,但会连接到不同的子类别。
我已通过以下子查询解决了问题:
SELECT T1.name
FROM bill_datatype T1
WHERE NOT EXISTS (
SELECT T2.bill_datatype_id
FROM obligatory_field T2
WHERE T2.bill_datatype_id = T1.id AND T2.bill_sub_category_id = 1
)
这个解决方案似乎工作得很好,但这样我就无法从第二个表中获得任何数据,这在将来可能需要。
你对如何用左连接解决这个问题有什么建议吗(子类别的where子句对我来说太有挑战性了。)
也提前感谢您的帮助!
2条答案
按热度按时间but5z9lq1#
从我对你问题的理解来看,我认为这个问题会达到你的目的:
这个
WHERE
现场条件JOIN'ed
表将只提供T1
它们没有bill_sub_category_id
或者他们的bill_sub_category_id
不是1。sqlfiddle公司
r55awzrz2#
http://sqlfiddle.com/#!2018年9月d4f616日