-1

私はmysqlの問題で立ち往生しています。私の例は次のとおりです

select * from table where id <= (select id from another_table)

another_table が何らかの数値を返す場合はうまく機能しますが、値が null の場合はどうなりますか? null値の場合another_tableなら全レコードを選択したい

すなわち

(select id from another_table) is null

になるか、そのように動作する必要があります

select * from table where
4

3 に答える 3

1

機能を使ってみましたCOALESCEか?

select * from table where id <= coalesce((select id from another_table), N);

ここで、「N」は「id」列に格納できる最大値です。たとえば2147483647INT.

于 2012-08-23T09:40:22.263 に答える
0

サブクエリの結果を変数に格納すると、うまくいきます。

SELECT a.*
FROM table a, (SELECT @id:= (SELECT id FROM another_table LIMIT 1)) c
WHERE @id IS NULL OR id <= @id;
于 2012-08-23T09:45:16.807 に答える
0

これを試して:

select @id := (select max(id) from table);
select * from another_table where id 
         <(case when @id is null then id else @id end)
于 2012-08-23T09:47:17.833 に答える