-1

我被困在mysql问题上。我的例子如下

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

如果 another_table 返回一些数字,但如果值为空怎么办。如果另一个表为空值,我想选择所有记录

IE

(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”列中的最大值,例如2147483647对于INT.

于 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 回答