gpt4 book ai didi

php - MySQL 联结表查询(带或不带联结)

转载 作者:行者123 更新时间:2023-11-29 12:34:09 24 4
gpt4 key购买 nike

所以我有一些主要的表和一个连接表,它们将 MySQL 中的几个表链接在一起。第一个主表是contacts,第二个是addresses,第三个是categories。连接表是 contact_address,它使用 contact_idaddress_id 链接 contactsaddresses主键。我需要获取属于“水管工”类别的有或没有地址的联系人...

我目前得到了这个:

SELECT
*
FROM
contacts T1
JOIN
contact_categories T2
USING
(contact_id)
JOIN
contact_address T3
USING
(contact_id)
JOIN
addresses T4
ON
T3.address_id = T4.address_id
WHERE
T2.general = 'Plumber'

只要水管工有地址,就可以正常工作,但是无家可归的水管工呢……他们在哪里?

最佳答案

您必须使用 LEFT JOIN 而不是(INNER)JOIN:

SELECT
*
FROM
contacts T1 JOIN contact_categories T2
USING (contact_id)
LEFT JOIN
contact_address T3
USING (contact_id)
LEFT JOIN
addresses T4
ON T3.address_id = T4.address_id
WHERE
T2.general = 'Plumber'

INNER JOIN 返回连接操作成功的所有行,LEFT JOIN 返回 LEFT 表中的所有行以及连接成功的右表中的行,或者连接成功时右表的所有 NULL 值不是。请看看这个visual explanations of joins .

关于php - MySQL 联结表查询(带或不带联结),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/27049126/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com