gpt4 book ai didi

mysql - 根据条件加入 MySQL 表?

转载 作者:行者123 更新时间:2023-11-29 04:48:05 34 4
gpt4 key购买 nike

问题:

我正在尝试找出如何根据 SQL 语句中的条件连接表。我花了一个小时搜索 Google、SO、各种网站和 MYSQL 手册,但我就是找不到适合我想做的事情的正确语法。

我无法发布我正在尝试开始工作的确切查询,但出于简单原因,我将发布一个简化版本。

场景:

假设我有三个表,a = person 表,b = address 表,c = car 表。

b 将始终连接到表 a,因为一个人总是住在一个地址,但表 c 应该只连接如果“car_id”字段中的值大于 0,则为 a,因为有车是可选的。

查询:

SELECT a.firstname, a.lastname, a.gender, a.address_id, b.address_firstline,  b_address_secondline, b.postcode, c.car_manufacturer, c.car_model 
FROM a
INNER JOIN b ON b.id = a.address_id
INNER JOIN c ON c.id = a.car_id AND a.car_id > 0
WHERE a.id = 1

对于 ID 为 1 的人,上面的查询将正常运行,因为他拥有汽车。但是,如果为 ID 为 2 的人运行查询,则查询将返回 0 行,因为她没有汽车。

如何使第二个 JOIN 成为可选的?我试过使用 IF ELSE 语句,但我总是遇到语法错误。有人能在这里指出我正确的方向吗?提前致谢

最佳答案

你应该使用左外连接来连接 c 和 a。

SELECT a.firstname, a.lastname, a.gender, a.address_id, b.address_firstline,  b_address_secondline, b.postcode, c.car_manufacturer, c.car_model 
FROM a
INNER JOIN b ON b.id = a.address_id
LEFT OUTER JOIN c ON c.id = a.car_id AND a.car_id > 0
WHERE a.id = 1

关于mysql - 根据条件加入 MySQL 表?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15772483/

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