/ / Як вибрати за допомогою приєднання на двох умовах для одного стовпця - mysql, sql

Як вибрати, використовуючи приєднання до двох умов для одного стовпця - mysql, sql

Я намагаюся досягти чогось подібного.

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     tag       name
1     foo, bar   name

Я зробив це, як це буде працювати в мовах програмування, таких як JAVA або C ++, використовуючи AND. Це призводить до нуля ..

select id, group_concat(distinct tag) as tag, group_concat(distinct name) as name
where (tag = "foo" and tag = "bar") group by id;

Відповіді:

1 для відповіді № 1

Я думаю, ви хочете group by і a 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", тому що тег може мати одне або інше значення, але не те і інше.