【发布时间】:2023-04-01 07:15:01
【问题描述】:
我有以下数据库
| ID | imagename | testresult | sampleref | uploadedat | orderid |
|---|---|---|---|---|---|
| 1 | filename1.png | NULL | ABC123 | 2021-08-19 12:00 | 1002 |
| 2 | filename2.png | NULL | ABC123 | 2021-08-19 13:00 | 1001 |
| 3 | filename3.png | NULL | ABC123 | 2021-08-19 14:00 | 1002 |
| 4 | filename4.png | NULL | ABC123 | 2021-08-19 15:00 | 1001 |
我正在使用 SQL 查询
SELECT *
FROM results
WHERE imagename IS NOT NULL
AND testresult IS NULL
AND sampleref LIKE 'LAT%'
ORDER BY testresult IS NULL DESC, uploadedat
LIMIT 25
但是我想按orderid 分组(但不是聚合分组),以便结果显示为
| ID | imagename | testresult | sampleref | uploadedat | orderid |
|---|---|---|---|---|---|
| 1 | filename1.png | NULL | ABC123 | 2021-08-19 12:00 | 1002 |
| 3 | filename3.png | NULL | ABC123 | 2021-08-19 14:00 | 1002 |
| 2 | filename2.png | NULL | ABC123 | 2021-08-19 13:00 | 1001 |
| 4 | filename4.png | NULL | ABC123 | 2021-08-19 15:00 | 1001 |
在这里,我们最初按uploadedat 排序,但随后显示与匹配orderid 的其余结果,基本上将它们分组在一起,但仍显示每一行。
我不能使用ORDER BY orderid, uploadedat,因为这会将第 2 行和第 4 行放在第 1 行和第 3 行之上
解决办法是什么?是否使用 2 个选择语句,第一个选择 * 并在 orderid 和 orderby 上载at 上进行分组,然后在 orderid = $Row ['orderid'] 处没有分组的第二个?或者有没有办法为此在单个语句中执行 JOIN 或双重选择?
谢谢?
【问题讨论】:
-
ORDER BY orderid DESC, uploadedat ASC会有帮助吗?
标签: mysql sql subquery sql-order-by window-functions