這裏是我的MySQL查詢,其結果是,我想獲得「功能」的「優先」的第一個結果的每一個值,從而得到以下GROUP BY函數返回的第一個結果
然而結果,「SELECT函數,FIRST(優先級)... GROUP BY函數」類型的語法不存在,你有什麼想法該怎麼做?
SELECT
function,
priority
FROM challenge_access_rule
WHERE 10 = challenge_access_rule.challenge_id
AND (
rule = 'everybody'
OR (rule = 'friends' AND 1)
)
UNION
SELECT
function,
isRestriction AS priority
FROM challenge_access_user
WHERE 10 = challenge_access_user.challenge_id AND challenge_access_user.user_id = 2
ORDER BY ABS(priority)
-- RESULT --
emitInstance | 0
emitDeal | 0
emitDealInstance | 1
emitDeal | 100
emitDealInstance | -100
vote | -100
emitDeal | -200
view | -200
interact | -200
-- DESIRED RESULT --
emitInstance | 0
emitDeal | 0
emitDealInstance | 1
vote | -100
view | -200
interact | -200
感謝, 巴斯蒂安
怎麼樣'MIN(ABS(優先級))'? – shmosel
-200在第二個結果列表中仍然出現兩次。這是打算嗎?爲什麼100不在該列表中?另外:如果您沒有提供唯一的排序順序,則術語「第一」不明確。如果優先級相同,你將如何決定哪一個是第一個? – trincot
我已經嘗試了「MIN(ABS(優先級))」,它的工作原理,但我沒有我的優先權的標誌 –