【问题标题】:Combine 2 rows of different tables into one row in SQL?在SQL中将2行不同的表合并为一行?
【发布时间】:2022-01-21 07:33:25
【问题描述】:

所以我的table1 表有以下行:

email name last_name activated
ex@ex.com john connor 1

我可以使用:

select email, name, last_name, activated from table1
where email = ex@ex.com
limit 1;

然后我有另一行 table2:

status end_period qtd
1 1828232 20

我可以通过以下方式获得:

select status, end_period, qtd from table2
where email = ex@ex.com
limit 1;

有什么方法可以将结果放在一行中? 像这样:

email name last_name activated status end_period qtd
ex@ex.com john connor 1 1 1828232 20

Ps:两个表都有一个“电子邮件”列,我用它来将一个表的行链接到另一个表。

【问题讨论】:

  • 这能回答你的问题吗? SQL query return data from multiple tables
  • 请包括两个表的定义。这两个表之间的主/外键关系是什么?
  • @TimBiegeleisen 我使用两个表都有的“电子邮件”列

标签: mysql sql


【解决方案1】:

您要查找的是表连接,在这种情况下,INNER JOIN 位于 table1table2 之间,其中 email 列匹配。

SELECT table1.email, table1.name, table1.last_name, table1.activated, table2.status, table2.end_period, table2.qtd
FROM `table1` AS table1
INNER JOIN `table2` AS table2
ON table1.email = table2.email
WHERE table1.email = 'ex@ex.com';

这会产生您预期的输出:

email name last_name activated status end_period qtd
ex@ex.com john connor 1 1 1828232 20

【讨论】:

  • 使用LIMIT 而不使用ORDER BY 通常是一个没有明确定义的事情。
  • 如果出于任何原因有 2 个用户使用相同的电子邮件,我通常使用 LIMIT 1 将结果限制在一行。我用 PHP 进行编码,以便它检查该用户是否已经存在并防止其发生,但仍然是一种安全措施,不是吗?
猜你喜欢
  • 1970-01-01
  • 2019-01-14
  • 1970-01-01
  • 1970-01-01
  • 2019-01-14
  • 1970-01-01
  • 1970-01-01
  • 2018-07-05
  • 1970-01-01
相关资源
最近更新 更多