Если в таблице два одинаковых значения в колонке как выбрать только то, у которого установлено значение в другой колонке?

293
10 ноября 2017, 07:59
+------+---------+-------+
|  id  |   name  | prefer|
+------+---------+-------+
|  11  |   Ivan  |  null |
+------+---------+-------+
|  12  |   Petr  |   1   |
+------+---------+-------+
|  12  |Petruccio| null  |       
+------+---------+-------+

выбираем имя по имеющемуся списку ид. если есть одинаковые ид надо брать имя у которого prefer=1. если ид уникален то у него prefer null - то есть простое условие where prefer IS NOT NULL - не прокатит.

Answer 1
SELECT * FROM mytable 
WHERE id = 12
ORDER BY prefer DESC
LIMIT 1

http://sqlfiddle.com/#!9/0116e7/1/0

Answer 2
SELECT *
FROM table
WHERE (id,COALESCE(prefer, -1)) IN ( SELECT id, MAX(COALESCE(prefer, -1))
                       FROM table
                       GROUP BY id
                     );
Answer 3
select id, ifnull(max(if(prefer=1,name,NULL)), max(name))
  from tabPref
 group by id
READ ALSO
Проблема пакетов при обновлении MYSQL

Проблема пакетов при обновлении MYSQL

При обновлении Mysql возникла такая проблемаЗависимости пакетов которые не устанавливаются и не удаляются

324
MySQl Репликация. Слэйв отстаёт от Мастера

MySQl Репликация. Слэйв отстаёт от Мастера

Столкнулся со следующей проблемой:

282
Объединенный отчет из двух таблиц SQL

Объединенный отчет из двух таблиц SQL

Нужно вывести item_id и price_in_rubPrice_in_rub – стоимость rub, считается как price из таблицы items умноженная на курс валюты на максимальную дату выставления...

240
Запрос SQL на удаление дубликатов из таблицы по одному полю

Запрос SQL на удаление дубликатов из таблицы по одному полю

Есть таблица с дубликатами в MySQL: (по полю name)

413