次のようなテーブルがあります。
_id integer
column_1 text
column_2 integer
column_2
の値を取得し、存在しない場合_id = 1
は最大値を取得したいcolumn_2
SELECT max(column_2), column_2
where _id = 2
これは確実に失敗します。同じクエリで両方の値を取得する方法はありますか?
次のようなテーブルがあります。
_id integer
column_1 text
column_2 integer
column_2
の値を取得し、存在しない場合_id = 1
は最大値を取得したいcolumn_2
SELECT max(column_2), column_2
where _id = 2
これは確実に失敗します。同じクエリで両方の値を取得する方法はありますか?
これを試して:
SELECT IFNULL(column_2, (SELECT MAX(column_2) FROM test)) column2
FROM test WHERE id = 1;
SQL FIDDLE DEMOを確認する
このクエリを試してください
SELECT
IFNULL(column_2,l.MValue)
FROM mytable
LEFT JOIN (
SELECT
id,
MAX(column_2) as MValue
FROM mytable
) as l ON l.id = mytable.id
WHERE mytable.id = 1
私があなたの質問を正しく理解しているなら、これはあなたを助けることができるかもしれません.
select
IF(column_2 IS NULL, X.maxv, column_2)
from test,(select max(column_2) as maxv from test)as X
( Exist ) SQL ステートメントを使用できます