我已經看過其他答案,但我無法將答案應用到我的應用程序。我有一個返回類似的查詢如下:每組最大的n,同時還返回內容
SELECT *
FROM MYTABLE T;
__________________________________________________________
| ID | AORB | ....OTHER (UNIQUE) CONTENT..... |
|---------------------------------------------------------|
| 1 | A | ....CONTENT |
| 1 | B | ....CONTENT |
| 2 | A | ....CONTENT |
| 3 | A | ....CONTENT |
| 3 | B | ....CONTENT |
| 4 | A | ....CONTENT |
| 5 | B | ....CONTENT |
| 6 | A | ....CONTENT |
| 6 | B | ....CONTENT |
-----------------------------------------------------------
正如你所看到的,也有偶爾與相同ID但不同的內容最多兩行和A或B的AORB
有時有一個「唯一」ID爲1,AORB
可以是A
或B
。
只是爲了使數據結構清晰,你可以通過 'AORB' 過濾如下起來拆表:
所有A的:
SELECT *
FROM MYTABLE T
WHERE T.AORB = 'A';
__________________________________________________________
| ID | AORB | ....OTHER (UNIQUE) CONTENT..... |
|---------------------------------------------------------|
| 1 | A | ....CONTENT |
| 2 | A | ....CONTENT |
| 3 | A | ....CONTENT |
| 4 | A | ....CONTENT |
| 6 | A | ....CONTENT |
----------------------------------------------------------
所有B的:
SELECT *
FROM MYTABLE T
WHERE T.AORB = 'B';
__________________________________________________________
| ID | AORB | ....OTHER (UNIQUE) CONTENT..... |
|---------------------------------------------------------|
| 1 | B | ....CONTENT |
| 3 | B | ....CONTENT |
| 5 | B | ....CONTENT |
| 6 | B | ....CONTENT |
-----------------------------------------------------------
我需要一個類似於以下內容的查詢,但將所有其他內容行返回到右側:
SELECT ID, MIN(AORB)
FROM MYTABLE T
GROUPBY ID;
我的要求是,如果有兩行具有相同的ID,返回行。如果給定ID只有一行,則返回該行,而不管AORB
。
我試着做了a和b的查詢都不過的UNION由於內容是不同的,但它仍然會返回「重複」的ID:
SELECT *
FROM MYTABLE T
WHERE T.AORB = 'B'
UNION
SELECT *
FROM MYTABLE T
WHERE T.AORB = 'A';
這真的很棒,它正是我所需要的。我用'WITH'替換了MYTABLE,因爲我的實際查詢要複雜得多。 –