首页 > 解决方案 > MySql - 如何组合两个表的 where 子句以进行一对多连接?

问题描述

我有 2 张桌子:

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'
)

有任何想法吗?

更新 :

数据示例:

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] 

标签: mysqlsql

解决方案


如果你让你的 SQL 更简单,答案就会变得更简单。

SELECT DISTINCT
    sellers.*
FROM sellers
    INNER JOIN locations on locations.seller_id = sellers.id
WHERE
    sellers.name = 'test'
    OR
    locations.name = 'test'

推荐阅读