2015-11-19 87 views
1

我需要調用我的數據庫以查看是否有parentId = 30的任何用戶在那裏。如果有,我想做一個表達。如果不是,我想再做一次。Sql,做一個表達式,如果其他表達式爲真

有時像這樣下面。請注意,這只是一個示例來解釋我正在嘗試做什麼。

Select count(*) as Users from user where parentID = 30 
When Users > 0 
    Select * from user where parentID = 30 
else 
    Select * from user 

希望它的問題是解釋得當。

+0

你需要一個不同的表達在一列,或執行不同的查詢? –

+0

@JiriTousek如果語句爲真,我需要執行不同的查詢 – DaCh

+1

除非您要求ANSI SQL解決方案,否則請添加您使用的數據庫類型。 –

回答

1

這應該工作:

Select * from tbl 
where parentID = 30 
or ((select count(*) as Users from tbl where parentID = 30) <= 0) 

要麼是的parentId 30只記錄被檢索,或有與無的parentId的記錄,所以所有記錄進行檢索。請注意,這將適用於SQL Server,Oracle和MySQL。

注意:這適用,因爲您的示例中的兩個查詢都返回相同的列。您需要指定您是否期待每個查詢中的不同列以供實際使用。

Demo

更新:由於您使用SQL Server,你可以簡單地存儲在一個變量的數量和使用的if-else來決定哪些查詢運行,無論什麼樣的疑問是,像這樣:

declare @count int = 0 

select @count = count(*) from user where parentid = 30 

if @count > 0 
begin 
    select * from user where parentid = 30 
end 
else 
begin 
    select * from user 
end 

Demo

+0

如果我想查找其他tbl中的select如果count = 0會怎麼樣? – DaCh

+0

@DaCh檢查我更新的答案。 –

相關問題