Подзапрос SQL WHERE в MySQL - PullRequest
0 голосов
/ 24 июня 2018

У меня есть таблица в MySQL,

value tag main_tag
1 tag_A ABC
-1 tag_C ABC
-1 tag_A BCD
1 tag_C BCD
-1 tag_A ABC
1 tag_C ABC
-1 tag_A BCD
1 tag_C BCD
-1 tag_C BCD

Есть три столбца value, tag, main_tag. Под каждым main_tag есть несколько других tag с. Я хочу получить записи, в которых сумма value с каждого tag равна нулю при каждом main_tag.

Это запрос, который я пробовал,

SELECT * FROM foo WHERE ( WHERE sum(value) = 0 GROUP BY tag) GROUP BY main_tag ;

Сначала я пытаюсь найти сумму значений GROUP BY tag, а затем использую GROUP BY main_tag. Но это не работает.

Вывод должен быть:

value tag main_tag
1 tag_A ABC 
-1 tag_C ABC 
-1 tag_A ABC 
1 tag_C ABC 

Ответы [ 3 ]

0 голосов
/ 24 июня 2018

Вы должны использовать предложение GROUP BY с JOIN:

select f.*
from foo f inner join 
           (select distinct tag
            from foo
            group by tag, main_tag
            having sum(value) = 0
          ) f1
          on f1.tag = f.tag;
0 голосов
/ 24 июня 2018
Create table temp select 'value', CONCAT('tag','main_tag') 
as group_tag from your_table;

select group_tag
from temp
group by group_tag
having sum(value) = 0;
0 голосов
/ 24 июня 2018

Это то, что вы хотите?

select main_tag
from foo
group by main_tag
having sum(value) = 0;
...