SQL条件GROUP BY:怎么做?

Dav*_*vid 4 mysql sql group-by

假设我有以下SQL查询:

SELECT Meeting.id AS meetingId, Bill.id AS billId
FROM Meeting 
LEFT JOIN Bill ON Meeting.FK_BillId = Bill.id
Run Code Online (Sandbox Code Playgroud)

这输出如下:

meetingId | billId
------------------
     a    |  NULL
     b    |  NULL
     c    |     1
     d    |     1
     e    |     1
     f    |     2
     g    |     2
Run Code Online (Sandbox Code Playgroud)

我想要以下输出,billId的组不是NULL:

meetingId | billId
------------------
     a    |  NULL
     b    |  NULL
     c    |     1
     f    |     2
Run Code Online (Sandbox Code Playgroud)

我怎样才能做到这一点?顺便说一下,我并不关心分组结果的模糊会议.

谢谢你的帮助!

Qua*_*noi 9

SQL Server:

SELECT  meetingId, billid
FROM    (
        SELECT  ROW_NUMBER() OVER (PARTITION BY billId ORDER BY meetingID) AS rn,
                m.*
        FROM    mytable m
        ) q
WHERE   rn = 1 OR billid IS NULL
Run Code Online (Sandbox Code Playgroud)

ANSI:

SELECT  MIN(meetingId), billid
FROM    mytable
WHERE   billid IS NOT NULL
GROUP BY
        billId
UNION ALL
SELECT  meetingId, billId
FROM    mytable
WHERE   billid IS NULL
Run Code Online (Sandbox Code Playgroud)

MySQL:

SELECT  meetingId, billid
FROM    mytable
WHERE   billid IS NOT NULL
GROUP BY
        billId
UNION ALL
SELECT  meetingId, billId
FROM    mytable
WHERE   billid IS NULL
Run Code Online (Sandbox Code Playgroud)

只要它属于正确的组,MIN如果你真的不关心meetingID将返回什么,这是一种更有效的方法.