【发布时间】:2018-10-29 17:37:43
【问题描述】:
我有两张桌子:
sellers
id|name
locations
id|seller_id|name
现在我想在 where 子句中获取卖家并加入位置并结合两个表中的属性。
初始查询是:
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]
【问题讨论】:
-
JOIN locations.seller_id = locations.id在这里没有任何意义。你可能需要JOIN locations.seller_id = sellers.id -
您的查询充满了语法错误;你到底想达到什么目标?
-
sry 我更新了查询
-
请提供相关且最少的样本数据,展示您的要求和预期输出。请参阅此链接以了解如何构建一个好的 SQL 问题:Why should I provide an MCVE for what seems to me to be a very simple SQL query?