2012-08-23 68 views
-1

我困在mysql問題上。凡我的例子是如下在條件爲空的情況下,如何進行所有選擇

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

效果很好,如果another_table返回一些數字,但如果該值是空的。我想在空值的情況下選擇是否another_table所有記錄

(select id from another_table) is null 

應該成爲或表現得像

select * from table where 
+0

相關的表(它們之間的一些關係,等等)?給一些更多的信息,你想要什麼,你加入他們? – Rolice

+0

@Rolice實際上兩個表都是相同的,即表名是相同的 –

+0

你的意思是你正在做一些像自連接(同一個表)而不是兩個具有相同結構的東西? – Rolice

回答

1

您是否嘗試過使用COALESCE功能?

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

其中'N'是可以存儲在「id」列中的最大值,例如, 2147483647INT

+0

+1好主意!我不會想到它。 –

+0

select * from points where id

+0

@JapanPro看到更新。 –

0

存儲變量子查詢的結果將做的伎倆爲您提供:

SELECT a.* 
FROM table a, (SELECT @id:= (SELECT id FROM another_table LIMIT 1)) c 
WHERE @id IS NULL OR id <= @id; 
0

試試這個:

select @id := (select max(id) from table); 
select * from another_table where id 
     <(case when @id is null then id else @id end) 
相關問題