mysql: выберите * из таблицы, но с уникальным значением в определенном столбце - PullRequest
0 голосов
/ 25 ноября 2018

У меня есть таблица SQL с этой структурой

id,userid, name, date1, date2

, поэтому у меня есть такие строки

1, 1, name33, 2018-10-12, 2018-10-13
2, 1, name22, 2018-10-12, 2018-10-13 
3, 1, name90, 2018-10-12, 2018-10-13

4, 2, name11, 2018-10-14, 2018-10-15
5, 2, name12, 2018-10-14, 2018-10-15 
6, 2, name30, 2018-10-14, 2018-10-15

что я хочу получить это

 userid, date1, date2
1, 2018-10-12, 2018-10-13
2, 2018-10-14, 2018-10-15

для каждого пользователя только 1 строка (поэтому не показывать строки, в которых дата1 и дата2 совпадают)

я пробовал это, но это не работает

SELECT * (DISTINCT date1,date2) FROM orders 

Ответы [ 3 ]

0 голосов
/ 25 ноября 2018

Если вы действительно хотите SELECT *, как упомянуто в заголовке и примере запроса, вы можете использовать GROUP BY для достижения этого - хотя и предостережение, ваши неагрегированные столбцы будут показывать какие-то произвольные значенияи если вы включите ONLY_FULL_GROUP_BY, это выдаст ошибку:

SELECT *
FROM `orders`
GROUP BY userid, date1, date2

Чтобы правильно использовать GROUP BY, вы должны только выбирать сгруппированные столбцы или использовать статистические функции для других столбцов,Например, при этом будут получены значения DISTINCT userid, date1 and date2, а все значения name для каждой группы будут представлены в виде списка через запятую:

SELECT userid, date1, date2, GROUP_CONCAT(`name`) as grouped_names
FROM `orders`
GROUP BY userid, date1, date2
0 голосов
/ 25 ноября 2018

Select userid,distinct date1,distinct date2 from table group by userid

Это, скорее, сгруппировало бы все идентификаторы с разными датами.

0 голосов
/ 25 ноября 2018

Вы используете DISTINCT неправильно;это не функция.Следующий запрос получит уникальные комбинации userid, date1, date2

SELECT DISTINCT 
  userid, 
  date1, 
  date2 
FROM orders 
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...