如果我有这两个表:
[ id - title - content ]
[ 1 - title1 - content1 ]
[ 2 - title2 - content2 ]
和
[ id - pid - tags ]
[ 1 - 1 - TAG1 ]
[ 2 - 1 - TAG2 ]
[ 3 - 1 - TAG3 ]
[ 4 - 2 - TAG2 ]
现在我要做的是从title
中选择content
和table1
,然后从tags
table2
中选择b.pid = a.id
SELECT a.title, a.content, b.tags
FROM table1 a LEFT JOIN table2 b ON a.id = b.pid
WHERE a.id = 1
所以我的查询是
title1
content1
TAG1 TAG2 TAG3
我想得到的是
TAG1
但我得到的只是title1 content1
,每个标记的重复值为SELECT a.title, a.content,
(SELECT DISTINCT b.tags)
FROM table1 a LEFT JOIN table2 b
WHERE a.id = 1
然后我试了
LDR
但仍未按预期工作。
答案 0 :(得分:2)
为了在同一行上输入与id相关的标签,你可以使用group_concat
select a.title, a.content, group_concat(b.tags)
from table1 a LEFT JOIN table2 b ON a.id = b.pid
WHERE a.id = 1
group by a.title, a.content
你也可以对同一个查询使用计数
select a.title, a.content, group_concat(b.tags), count(*)
from table1 a LEFT JOIN table2 b ON a.id = b.pid
WHERE a.id = 1
group by a.title, a.content
对于不同的tas,你可以使用
select a.title, a.content, group_concat(distinct b.tags)
from table1 a LEFT JOIN table2 b ON a.id = b.pid
WHERE a.id = 1
group by a.title, a.content