0
假設我有一個表(關係),如如何爲這種情況編寫sql?
MyTab(ID1,ID2,IsMarked, data,....)
樣本數據可能看起來像:
1, 1, 1, ...
1, 2, 0, ...
1, 3, 0, ...
2, 34, 1, ...
3, 4, 0, ...
4, 546, 0, ...
4, 8, 0, ...
只有一個可以被標記爲每個ID1
。我想爲所有實體ID1
獲取標記爲1
的數據。如果沒有標記的記錄,請獲取第一個或其中任何一個。
對於上面的樣本數據,結果應該是:
1, 1, 1, ...
2, 34, 1, ...
3, 4, 0, ...
4, 546, 0, ...
聯盟可能是一個解決方案,但過長,可能會導致糟糕的表現。 我的想法是按ID1
和IsMarked
desc排序數據,每個ID1
獲得第一個1,但是如何爲這種情況編寫SQL
?
*如果沒有makred記錄,獲得第一個*,你如何訂購這些行?,你怎麼知道哪一行是第一行? – Lamak
相同的ID1是否可以有多個IsMarked集?例如。可以將數據看作1,1,1 ... 1,2,1 ... –