id name (sources)
-- ----
1 first
2 second
source_id tag_id (source_tags)
--------- ------
1 1
1 2
2 3
source_id tag_id exception_value (source_tag_exceptions)
--------- ------ ---------------
1 2 1
1 1 2
id name (tags)
-- ----
1 tag_one
2 tag_two
3 tag_three
我有源和源标签的一对多关系。如果有可用的话,我希望显示source_tag_exceptions.exception_value。当我做一个简单的LEFT JOIN时,我为每个source_tag得到一行。我理解为什么,但是如何只为source_tag_exceptions显示一行并仍然显示所有源行?如果有多行,我宁愿看到值1超过任何其他行...
这是我正在使用的返回多行的查询
SELECT sources.name, source_tag_exceptions.exception_value
FROM sources
LEFT JOIN source_tags ON source_tags.source_id = sources.id
LEFT JOIN source_tag_exceptions ON source_tag_exceptions.source_id = sources.id AND source_tag_exceptions.tag_id = source_tags.tag_id
当前结果
name exception_value
---- ---------------
first 1
first 2
second NULL
目标结果
name exception_value
---- ---------------
first 1
second NULL