-1

私はこのようなことをしたい:

SELECT IF((SELECT something FROM table) AS tmp) > 0, tmp, (SELECT bla FROM oter_table))

残念ながら、「as tmp」と tmp の復元は機能していません。どうすればこれを機能させることができますか? クエリを繰り返さずに:

SELECT IF((SELECT something FROM table) > 0, (SELECT something FROM table), (SELECT bla FROM oter_table))
4

2 に答える 2

3

使用できますUser-Defined Variables

SELECT IF(
          @val:=(SELECT something FROM table1) > 0, 
          @val, 
          (SELECT bla FROM table2)
       )

SQL フィドル

于 2013-07-18T12:59:27.907 に答える
0
SELECT IF( (SELECT something AS tmp FROM first_table) > 0, tmp, (SELECT bla FROM other_table) )

編集これはうまくいきません。次のように、「WHERE」句を使用して選択範囲を定量化する必要があります。

SELECT IF( (SELECT something FROM first_table) > 0, (SELECT something FROM first_table), (SELECT something_else FROM second_table) ) FROM first_table WHERE something = 45 
于 2013-07-18T12:54:26.280 に答える