これを試すことができます:
SELECT *
FROM `table`
WHERE `non_unique_col` = 123
ORDER BY `absolute_relative_col` DESC
LIMIT 1
このように、結果が 1 つだけの場合は問題ありません。複数の結果がある場合は、「相対的な」結果が得られます。
編集:
@ Travesty3 の提案に従って、このクエリは、OP ステートメントに基づいて(non_unique_col + absolute_relative_col)
いるという仮定に基づいて作成されていることを強調したいと思います。unique_col
その列の違いで行が重複している可能性があります
と
相対行がある場合は、絶対行も常に存在します
編集2:
より一般的な解決策は次のとおりです。
SELECT *
FROM `table` as t1
JOIN (
SELECT non_unique_col, absolute_relative_col
FROM `table`
WHERE `absolute_relative_col` = 'relative'
) as t2 USING (non_unique_col)
WHERE t2.absolute_relative_col = 'relative' OR (
t2.absolute_relative_col IS NULL
AND t1.absolute_relative_col = 'absolute'
)