我有两张table:
sellers
id|name
locations
id|seller_id|name
现在我想在where子句中获取sellers和join locations,并合并两个表中的属性。
初始查询是:
SELECT
sellers.id
FROM sellers
JOIN locations.seller_id = sellers.id
我必须再添加一个部分,因为我不需要重复的数据:
SELECT
sellers.id
FROM sellers
JOIN locations on locations.seller_id = sellers.id
WHERE (
SELECT id from locations
WHERE locations.seller_id = sellers.id
LIMIT 1
)
现在我可以做以下事情了
SELECT
sellers.id
FROM sellers
JOIN locations on locations.seller_id = sellers.id
WHERE (
SELECT id from locations
WHERE locations.seller_id = sellers.id
LIMIT 1
)
AND (
sellers.name = 'test'
OR
locations.name = 'test'
)
这里的问题是,mysql将加入第一个位置,如果该位置的名称不是“test”,并且该卖家有一个名称为“test”的位置,它就不会出现在结果中。
有什么想法吗?
更新时间:
数据示例:
sellers
id|name
1|test
2|test2
locations
id|seller_id|name
1|1|test3
2|2|test4
3|2|test
4|2|test
result should be
[1, 2] but with my query it is [1]
2条答案
按热度按时间jdgnovmf1#
你可以用
Group By
与Having
:ffdz8vbo2#
如果您使sql变得更简单,那么答案就会变得更简单。