2
我有這樣MYSQL的情況下,當
----------------------------------------------------------
| userID | dateTime | val1 | val2 |
----------------------------------------------------------
| abc | 2014-10-20 00:00:00 | 21.5 | 18.5 |
| ijk | 2014-10-21 00:00:00 | 22.5 | 17.5 |
| pqr | 2014-10-22 00:00:00 | 23.5 | 16.5 |
| xyz | 2014-10-23 00:00:00 | 24.5 | 14.5 |
----------------------------------------------------------
我想通過dateTime
在desc order
表由val1
在asc order
排序,並在asc order
val2
但如果用戶ID的比賽我想該行的數據表在頂部總是獨立於其他領域。
爲此,我有這樣的
Select *
from mytable
order by case
when userID = 'abc' then 1
else 'ordeyByField' end 'order';
WHERE orderByField = dateTime or val1 or val2
For dateTime, order = desc
and
for val1 or val2, order = asc
查詢當我與VAL1對其進行排序或VAL2這是很好(因爲順序是ASC),但是當我有日期時間排序它,它顯示了匹配的用戶ID列在最後(因爲順序是desc)。我總是希望頂部匹配的userID行。
我希望我已經解釋了我的要求。如果您需要更多解釋,請告訴我。
在此先感謝
完美..這就是我想要的......非常感謝你:) – 2014-10-28 12:20:01
實際上,這就是FIELD()函數的用途! – Strawberry 2014-10-28 12:22:38
@Strawberry:你可以在這裏使用'FIELD(userID,'abc')desc',但只要我們只處理一個值,我就會認爲這只是一個替代方案,沒有更多。然而,有了更多的排名值,FIELD肯定會更適合案例結構。 – 2014-10-28 13:14:12