我正在努力实现这样的目标。
id tag name
1 foo name
1 bar name
2 foo name
2 foss name
我试图做的是。
select id, group_concat(distinct tag) as tag, group_concat(distinct name) as name
where tag = "foo" or tag = "bar" group by id;
我得到了,
id tag name
1 foo, bar name
2 foo, foss name
但是,我想要的只是标签是" foo"和" bar"对于相同的id,然后打印,这应该给出这样的输出。
id tag name
1 foo, bar name
我这样做,因为它可以在JAVA或C ++等编程语言中使用AND。它导致null ..
select id, group_concat(distinct tag) as tag, group_concat(distinct name) as name
where (tag = "foo" and tag = "bar") group by id;
答案 0 :(得分:1)
我想你想要一个group by
和一个having
:
select id, group_concat(distinct tag) as tag,
group_concat(distinct name) as name
from t
where tag in ('foo', 'bar')
group by id
having count(distinct tag) = 2;
作为一个说明。我熟悉的任何编程语言都会为tag = 'foo' and tag = 'bar'
返回false,因为tag可能有一个值或另一个值,但不是两者都有。