mysql - 如果找不到匹配项,如何追加列数据?

标签 mysql sql

我有 table1 和 table2 如下

表1

first_name | last_name | t1_id

表2

T2_id | color | length

Table1 可能有一个 id 值在 Table2 id 中不存在,但它有时可能存在。我想编写一个给出以下结果的查询: 名字 |姓氏 | t1_id |颜色 |长度 如果表 2 中不存在 id 值,则结果应如下所示:

First_name | last_name | t1_id | color | length
-----------------------------------------------
Johan      | Mike      | 33    |   -   |   -

我的尝试:

SELECT first_name,
       last_name,
       t1_id,
       color,
       length
FROM Table1, Table2
WHERE t1_id = t2_id

但是当 t1_id 的值只存在于 t2_id 中时,这显示结果。

最佳答案

使用 LEFT 联接从第一个表中获取所有行,即使它们的关联不存在于第二个表中也是如此

SELECT first_name,
       last_name,
       t1_id,
       color,
       length
FROM Table1
LEFT JOIN Table2 ON t1_id = t2_id

如果列为空,您可以使用 COALESCE(column,'-') 显示 -

SELECT first_name,
       last_name,
       t1_id,
       COALESCE(color,'-'),
       COALESCE(length,'-')
FROM Table1
LEFT JOIN Table2 ON t1_id = t2_id

关于mysql - 如果找不到匹配项,如何追加列数据?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/47977588/

相关文章:

mysql - 在应用程序部分设置 MySQL 唯一键或检查重复项?

sql - 如何在 MySQL 中的两列上执行 boolean 逻辑?

php - 带有别名的多个查询 Mysql

sql - SQL Server中如何创建数据库的别名

sql - Postgres 通过另一列在列组中获取至少具有 1 个特定值的行

python - 如果在 1/100 秒内请求相同的 Flask api,sqlalchemy 在插入后不会更新

mysql - 允许引用完整性更新和删除

mysql - 删除数据库时出错(无法 rmdir '.test\' ,errno : 17)

mysql - MySQL中多个表的分组和求和

远足组织的 MySQL 查询帮助