2016-02-13 12 views
-1

Вот моя схема таблицызаписей MySQL группы на основе значения столбца

Table Schema for Test Table

В приведенной выше тестовой таблице, я хочу, чтобы сгруппировать мои записи по user_by и message_type только тогда, когда message_type = " push_message ".

Я пытаюсь достичь этого без какого-либо дополнительного запроса, пожалуйста, предложения.

Я попробовал этот

SELECT * FROM `test` group by (CASE WHEN message_type = 'push_message' THEN user_by ELSE id END); 

Но выдает ошибку в MySQL.

Вот что я хочу: enter image description here

+0

Если вы группируете свои user_by и message_type, то некоторые из ваших соответствующих полей исчезнут. Так что вам действительно нужно сделать это, потеряв эти поля или нет. –

+1

сделайте [sqlfiddle] (http://sqlfiddle.com/), чтобы мы могли помочь вам правильно. –

+0

Что вы пробовали? Вы знаете, как сделать запрос, но он не работает? Как предложил @FrayneKonok, вы должны привести пример. – Cynical

ответ

1

привет Спасибо за ваши ответы. После нескольких исследований я понял это правильно.

SELECT id,user_id, user_by,message_type FROM test group by 
if(message_type = 'push_message',concat(user_by,message_type),id); 
0

Вот простой пример GROUP_CONCAT, Вы можете получить свой желаемый результат после запуска этого/выполнить это. Например, с разделителем «,», так что вы можете быстро понять все.

Функция GROUP_CONCAT возвращает строковый результат с объединенными значениями, отличными от NULL, из группы. Она возвращает NULL, если нет ненулевых значений

SELECT id, user_id, 
    GROUP_CONCAT(DISTINCT user_by ORDER BY user_by DESC SEPARATOR ', ') as user_by 
    FROM test 
WHERE message_type = 'push_message' 
GROUP BY user_by; 

Это может помочь вам, если нет, то пожалуйста, дайте мне знать, и сделать скрипку, чтобы понять, что на самом деле произошло!

Если вам нужно сохранить другое поле, пожалуйста, сделайте для этого GROUP_CONCAT, иначе другие данные исчезнут из выходной таблицы.

+0

Это не помогает. Я отредактировал вопрос, чтобы дать вам четкое представление о том, чего я хочу. Скажи мне, если хочешь чего-нибудь еще. –

+0

вы можете сделать [sqlfiddle] (http://sqlfiddle.com/) –

Смежные вопросы