gpt4 book ai didi

Mysql 在两个表之间进行选择,不限制记录是否出现在连接表上

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

我一直在试图弄清楚如何在表之间选择与一个 id 相关的数据,而不将其限制在连接表中。我尝试使用 UNION、Inner join、JOIN,但它限制我显示仅在两个表中的记录。举例来说:

Table 1 (users)

id | name | register

1 | John | 2014-03-01

2 | Kate | 2014-03-02

等等..

Table 2 (birthdays by example)

id | user | birthday

1 | 1 | 1989-09-09

请注意,凯特在生日表上没有记录,如果我有的话:

SELECT U.id, name, register, B.birthday FROM users as U INNER JOIN birthday as B ON B.user = U.id

它只会显示 JOHN 数据,我想选择我的所有用户,如果连接表中不存在该记录,仍然可以选择我的所有用户,类似于:

id | name | register   | birthday 

1 | John | 2014-03-01 | 1989-09-09

2 | kate | 2014-03-02 | null or ''

3

4

等等

抱歉,如果这是一个愚蠢的问题,但我找不到这个问题的答案。我将不胜感激的帮助。

问候

最佳答案

您需要一个LEFT OUTER JOIN,而不是普通的JOIN(也称为INNER JOIN),如下所示:

SELECT U.id, name, register, B.birthday 
FROM users as U
LEFT JOIN birthday as B
ON B.user = U.id

usersbirthday 表之间的 LEFT JOIN 将包含“左”表(users)的所有记录,即使连接条件未找到任何匹配记录在“右”表(生日)中。

这篇关于代码项目的优秀文章将为您提供很大帮助:Visual Representation of SQL Joins .

所有 JOIN 类型的摘要:

enter image description here

注意:Mysql不支持FULL OUTER JOIN,但可以模拟。有用的文章:

关于Mysql 在两个表之间进行选择,不限制记录是否出现在连接表上,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/22242787/

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