我有一個表Emp例如。Sqlite選擇查詢 - 返回默認行?
----------------------
eName | eId
----------------------
Anusha 1
Sunny 2
說我要找(條目希望編寫發現該行並顯示它。但是如果它不覺得它預計將顯示一個默認行查詢id爲3.I溫度, 999)
select case
when (total != 0) then (select eName from Emp where eId = 3)
when (total == 0) then "temp"
end as eName,
case
when (total != 0) then (select eId from Emp where eId = 3)
when (total == 0) then 999
end as eId
from Emp,(select count(*) as total from Emp where eId = 3);
使用此查詢,我寫它給了我兩行的結果。
temp 999
temp 999
我想這是因爲 (select count(*) as total from Emp where eId = 3)
此查詢在從查詢的列表。
我嘗試使用distinct子句,它給我只有一行。但我有點懷疑,如果我搞亂查詢,只試圖可能僱用黑客做它。請建議是否有更好的方法來做到這一點,或者如果我錯了。
傑伊,我幾乎忘了它意味着一個join.Not沒有在哪裏caluse意思是一個交叉連接對我來說有點新。現在是我刷新我的sql基礎知識的時候了。感謝它真的幫助了我目前正在做的事情。這是一個非常詳細的解釋,非常感謝! – 2012-04-27 20:31:39
我認爲有很多可以說是新的語法,你寫單詞JOIN顯示連接。但是,是的,如果您在FROM中命名了兩個表格,那麼您將第一個表格中的每個記錄與第二個表格中的每個記錄進行配對,即如果表格A中有3個記錄,並且表格B中有4個記錄, 3 * 4 = 12個記錄,然後受WHERE子句中的條件限制。通常情況下,您希望排除大部分記錄的條件,比如a.customer_id = b.customer_id或其他類似的條件,以僅獲得有意義的對。 – Jay 2012-05-02 20:58:31