正如标题所示,我想选择用a组成的每组行的第一行GROUP BY.
具体来说,如果我有一个purchases看起来像这样的表:
SELECT * FROM purchases;
我的输出:
id | customer | total ---+----------+------ 1 | Joe | 5 2 | Sally | 3 3 | Joe | 2 4 | Sally | 1
我想查询每个产品id的最大购买量(total)customer.像这样的东西:
SELECT FIRST(id), customer, FIRST(total)
FROM  purchases
GROUP BY customer
ORDER BY total DESC;
预期产出:
FIRST(id) | customer | FIRST(total)
----------+----------+-------------
        1 | Joe      | 5
        2 | Sally    | 3
 我有一个带有日期时间字段的SQL表.有问题的字段可以为null.我有一个查询,我希望结果按日期时间字段按升序排序,但是我想要在列表末尾的日期时间字段为空的行,而不是在开头.
有没有一种简单的方法来实现这一目标?
我有一个用户登记和退出时间表("lms_attendance"),如下所示:
id  user    time    io (enum)
1   9   1370931202  out
2   9   1370931664  out
3   6   1370932128  out
4   12  1370932128  out
5   12  1370933037  in
我正在尝试创建一个这个表的视图,它只输出每个用户ID的最新记录,同时给我"in"或"out"值,如下所示:
id  user    time    io
2   9   1370931664  out
3   6   1370932128  out
5   12  1370933037  in
我很接近,到目前为止,但我意识到,意见将不接受subquerys,这使其成为了很多困难.我得到的最接近的查询是:
select 
    `lms_attendance`.`id` AS `id`,
    `lms_attendance`.`user` AS `user`,
    max(`lms_attendance`.`time`) AS `time`,
    `lms_attendance`.`io` AS `io` 
from `lms_attendance` 
group by 
    `lms_attendance`.`user`, 
    `lms_attendance`.`io`
但我得到的是:
id  user    time    io
3   6   1370932128  out
1   9   1370931664  out
5   12  1370933037  in …如何通过字段订购DESC,但首先列出NULL值?
所以我有一张桌子:
reuestId | offerId | offerTitle
1        | 1       | Alfa
NULL     | 2       | Beta
2        | 3       | Gamma
我想选择它们,以便结果如下:
NULL | 2 | Beta
2    | 3 | Gamma
1    | 1 | Alfa
我需要按日期/时间字段对PostgreSQL表进行排序,例如last_updated.
但是,该字段允许为空或空,我想与空记录last_updated来之前,非空last_updated.
这可能吗?
order by last_updated asc /* and null last_updated records first ?? */
我一直在使用PostgreSQL,现在正在迁移到MySQL.
在我的疑问,我使用的PostgreSQL的SELECT DISTINCT ON (col1, col2, col3),我想知道是否有这说法的任何对应的MySQL.
sql ×4
mysql ×3
postgresql ×3
sql-order-by ×3
group-by ×2
distinct ×1
null ×1
select ×1
sorting ×1
sqlite ×1