Заказ и группировка с одним столбцом - PullRequest
0 голосов
/ 13 мая 2019

Я хотел бы заказать эти данные по полю даты и времени в потомке с номером телефона, сгруппированным по.

datetime           |telephone|user               |
-------------------|---------|-------------------|
2019-11-15 20:41:43|      123|proident, sunt in  |
2019-10-08 09:49:33|      456|a deserunt mollit  |
2019-08-13 12:38:16|   123334|d tempor incididun |
2019-07-24 21:44:15|123456789|sectetur adipisci  |
2019-06-14 15:03:32|123456789|it, sed do eiusmod |
2019-05-20 07:09:01|   234234|aliqua. Ut enim    |
2019-05-10 23:22:32| 90812345|Lorem ipsum dolor  |
2019-03-25 17:27:37|   123334|fficia deserunt mo |
2019-02-25 22:32:19|      123| labore et dolore  |
2019-02-18 16:01:05|123456789|lit, sed do eiusmo |

Я пробовал это, но этого недостаточно.

SELECT * FROM(select * from test order by test.`datetime` desc LIMIT 
18446744073709551615) as sub;

Например, я бы хотел, чтобы телефон 123 сначала повторялся дважды с полем даты и времени в порядке убывания.

datetime           |telephone|user               |
-------------------|---------|-------------------|
2019-11-15 20:41:43|      123|proident, sunt in  |
2019-02-25 22:32:19|      123| labore et dolore  |
2019-10-08 09:49:33|      456|a deserunt mollit  |
2019-08-13 12:38:16|   123334|d tempor incididun |
2019-07-24 21:44:15|123456789|sectetur adipisci  |
2019-06-14 15:03:32|123456789|it, sed do eiusmod |
2019-02-18 16:01:05|123456789|lit, sed do eiusmo |
2019-05-20 07:09:01|   234234|aliqua. Ut enim    |
2019-05-10 23:22:32| 90812345|Lorem ipsum dolor  |
2019-03-25 17:27:37|   123334|fficia deserunt mo |

1 Ответ

4 голосов
/ 13 мая 2019

Вы можете достичь этого результата, самостоятельно присоединив свою таблицу к таблице с максимальными значениями datetime для каждого значения telephone, а затем отсортировав их по этим максимальным значениям, после чего следует фактическое значение datetimeдля этой строки:

SELECT t1.* 
FROM test t1
JOIN (SELECT telephone, MAX(datetime) AS datetime
      FROM test
      GROUP BY telephone) t2 ON t2.telephone = t1.telephone
ORDER BY t2.datetime DESC, t1.datetime DESC

Вывод:

datetime            telephone   user
2019-11-15 20:41:43 123         proident, sunt in
2019-02-25 22:32:19 123         labore et dolore
2019-10-08 09:49:33 456         a deserunt mollit
2019-08-13 12:38:16 123334      d tempor incididun
2019-03-25 17:27:37 123334      fficia deserunt mo
2019-07-24 21:44:15 123456789   sectetur adipisci
2019-06-14 15:03:32 123456789   it, sed do eiusmod
2019-02-18 16:01:05 123456789   lit, sed do eiusmo
2019-05-20 07:09:01 234234      aliqua. Ut enim
2019-05-10 23:22:32 90812345    Lorem ipsum dolor

Демонстрация на dbfiddle

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