gpt4 book ai didi

MySQL Results 一个用逗号分隔的列表和来自不同表的值

转载 作者:太空宇宙 更新时间:2023-11-03 11:09:47 26 4
gpt4 key购买 nike

我有两个表,我想连接以逗号分隔的值并向它们显示一个字段显示包含另一个表中的 id 的所有值。

例子:

这是表1

--------------------------------------
| id | title | area |
| -----------------------------------|
| 1 | hi | 1,12,14 |
| -----------------------------------|
| 2 | by | 12,14,2 |
| -----------------------------------|
| 3 | me | 14,2 |
--------------------------------------

这是表2

---------------------
| id | name |
|-------------------|
| 1 | Wa |
|-------------------|
| 12 | La |
|-------------------|
| 14 | Sa |
|-------------------|
| 2 | Tn |
---------------------

我想显示这个

------------------------------------
| id | title | area |
|----------------------------------|
| 1 | hi | Wa,La,Sa |
|----------------------------------|
| 2 | by | La,Sa,Tn |
|----------------------------------|
| 3 | me | Sa,Tn |
------------------------------------

只需将表 1 中的值替换为表 2 中的名称和 id。

最佳答案

理想情况下,您应该创建一个名为 table1_has_table2 的新表

CREATE TABLE table1_has_table2 (
table1_id INT(11) UNSIGNED NOT NULL,
table2_id INT(11) UNSIGNED NOT NULL,
PRIMARY KEY (table1_id,table2_id)
)

这样就可以非常简单地执行您的 n:m 关系,即

SELECT 
table1.id,
table1.title,
GROUP_CONCAT(table2.name) AS area

FROM table1

INNER JOIN table1_has_table2
ON table1_has_table2.table1_id = table1.id

INNER JOIN table2
ON table2.id = table1_has_table2.table2_id

GROUP BY table1.id

从长远来看,这种方法也更加有效

关于MySQL Results 一个用逗号分隔的列表和来自不同表的值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9377013/

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