mysql - SQL 连接 2 个表,其 ID 位于一行

标签 mysql sql

我正在尝试将两个表中的数据连接到一行中,但我似乎不知道如何实现这一点。

表1结构

id姓名号码电子邮件

表2结构

id friend

问题是在表1中,id是唯一的,而在表2中id不是,他可以有很多 friend 。 (Ofc 这都是示例)。

我正在尝试让一行看起来像这样

id姓名号码电子邮件 friend [1] friend [2]

有什么想法可以实现这一点,或者我是否需要更改我的数据库结构才能获得此结果?

*注意(他只能选择 8 个不同的 friend )。

最佳答案

最有效的方法是使用 JOIN 语句将结果分组在一起;

SELECT T1.*, F1.Friend
FROM Table_1 as T1
LEFT JOIN Table_2 as F1
ON T1.id = F1.id

然后迭代 mysql 客户端中的每一行。

另一种方法是对同一个表进行多次联接,但如果没有更好的方法来区分各个 friend 记录,您最终会在 JOIN 语句中进行一些困惑的排除。

SELECT T1.*, F1.Friend, F2.Friend, F3.Friend, [snip/] F8.Friend
FROM Table_1 as T1

LEFT JOIN Table_2 as F1
ON T1.id = F1.id AND F1.Friend NOT IN (F2.Friend, F3.Friend, [snip/] F8.Friend)

LEFT JOIN Table_2 as F2
ON T1.id = F2.id AND F2.Friend NOT IN (F1.Friend, F3.Friend, [snip/] F8.Friend)

LEFT JOIN Table_2 as F3
ON T1.id = F3.id AND F3.Friend NOT IN (F1.Friend, F2.Friend, F4.Friend, [snip/] F8.Friend)

[big snip/]

LEFT JOIN Table_2 as F8
ON T1.id = F8.id AND F8.Friend NOT IN (F1.Friend, F2.Friend, [snip/] F7.Friend)

关于mysql - SQL 连接 2 个表,其 ID 位于一行,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18805477/

相关文章:

sql - 分组依据,然后仅选择 bool 列的每个值都为真的记录

java - 如何在 solr 字段中实现规范化?请专家指教

mysql - mysql pivot 查询中的 where 子句

mysql - 关于选择查询的问题

php - 脚本中的 Mysql 插入失败

php - 获取刚刚插入MySQL数据库的行的id

php:循环遍历mysql查询的结果到增量计数器(关联数组)

MySQL JSON数据需要SQL查询来根据对象中的键值对对象数组进行排序

sql - 如何使用文件的内容更新 sqlite3 中的单个字段?

mysql - 同一张表在 2 个条件下内联一个表,有时任一条件都为假