gpt4 book ai didi

mysql 加入一个列

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

我有两个像这样的mysql表

CREATE  TABLE IF NOT EXISTS tbl1 (
`id` INTEGER(2) UNSIGNED NOT NULL PRIMARY KEY AUTO_INCREMENT ,
`name` VARCHAR(20) NOT NULL
) ENGINE=InnoDB CHARACTER SET utf8 COLLATE utf8_general_ci;

CREATE TABLE IF NOT EXISTS tbl2 (
`tbl_id` INTEGER(2) UNSIGNED NOT NULL PRIMARY KEY AUTO_INCREMENT ,
`id2` INTEGER(2) UNSIGNED NOT NULL ,
`email` VARCHAR(20) NOT NULL ,
FOREIGN KEY (`id2`) REFERENCES tbl1(`id`)
) ENGINE=InnoDB CHARACTER SET utf8 COLLATE utf8_general_ci;

这是 tbl1 中的示例数据

1   hello
2 world
3 happy
4 end

和 tbl2 中的示例数据

2   1   me@mail
3 2 my@mail
4 4 you@mail

现在我想选择姓名和电子邮件加入两个表。这是sql

select name,email from tbl1 t1,tbl2 t2 where t2.id2 = t1.id;

有了它,我得到了

hello   me@mail
world my@mail
end you@mail

但我想要来自 tbl1 的所有行

hello   me@mail
world my@mail
happy null or nothing or 0
end you@mail

我卡在这里了。任何帮助将不胜感激。提前致谢。

最佳答案

您应该使用LEFT JOIN:

select name,email 
from tbl1 t1
LEFT JOIN tbl2 t2
on t1.id = t2.id2;

参见 SQL Fiddle with Demo .

您当前的查询正在使用 INNER JOIN,它将只返回两个表中匹配的行。 LEFT JOIN 将返回 tbl1 中的所有记录,即使 tbl2 中没有匹配的行也是如此。

如果您在学习连接语法方面需要帮助,请点击此处 visual explanation of joins

关于mysql 加入一个列,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14588597/

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