Есть таблица test.
Мне нужно вытащить одну строку, группировка по сумме (amount), но если есть is_read=0 - то выводить именно эту строку.
Пробовал так
SELECT id, is_read FROM test GROUP BY amount ORDER BY is_read ASC;
Выводит только первую строку
Как вывести так, чтобы выводилось сортируя по is_read=0?
Чтобы был результат такой:
id=3, is_read=0
вот таким образом:
select id, is_read, amount from test group by amount, is_read
order by amount, is_read
limit 1
http://sqlfiddle.com/#!9/e5de99/4
GROUP BY возвращает строку, какую ему вздумается, в итоге ты можешь получить в выборке какой угодно id. Если у тебя is_read = 0 имеет 50 записей, и идентификаторы этих записей 4,5,6,7,8 и т.д. то GROUP BY будет возвращать постоянно разные их значения. потому что It's indeterminate which row will be returned. MySQL is free to return values from any row in the group.
select *, (select id from test t2 where t1.amount=t2.amount)
and t2.is_read=mp limit 1) id
from
(select amount, min(is_read) mp from test group by amount) t1
Оборудование для ресторана: новинки профессиональной кухонной техники
Частный дом престарелых в Киеве: комфорт, забота и профессиональный уход
Есть несколько связанных сущностейУ сущности Propose в виде поля есть User
Здравствуйте, подскажите, пожалуйста, открыл для себя новый протокол XMPPВ частности начал изучать реализующей его Openfire