5

基本的に私はこれをしたい:

SELECT * FROM `table` WHERE x = 'hello' OR x = 'bye' LIMIT 1';

1つの値を返すようにしたいのですが、1番目のwhere句からの結果を優先します。したがって、列xの値が「hello」である行が存在する場合、「bye」値からの結果は返されません。ただし、「hello」値が存在しない場合は、「bye」値の結果が返されます。

それはかなり些細なことのように見えますが、それを行う方法を理解することはできません。何か案は?

4

1 に答える 1

11

これを行う1つの方法は、次を使用することですorder by

SELECT *
FROM `table`
WHERE x = 'hello' OR x = 'bye'
order by (case when x = 'hello' then 1 else 2 end)
LIMIT 1'

「1」と「2」は、行に優先順位を付けるために使用される任意の数字です。'hello'の値は「1」になるため、他の値の前に並べられます。

于 2012-12-11T22:55:39.490 に答える