2011-05-23 94 views
0

我有一個SQL語句在WHERE子句中有多個條件,但是一旦滿足一個條件,查詢就會停止。我需要的是查詢返回與其中一個條件有關的所有行。SQL Where Where子句返回多個結果

例如:

select * from EMPLOYEE_LEAVE 
where 
    ENUMBER = :num 
    or 
    EFNAME = 'Sebastien' 
    or 
    ESNAME = :sname 

在這種情況下,查詢必須搜索所有的記錄,其中EFNAME是塞巴斯蒂安。我的數據庫中有兩條記錄匹配這個條件,但查詢只返回第一個結果。我將如何去顯示匹配此條件的所有記錄?

+1

您使用的是什麼RDBMS?搜索大小寫是否敏感? – Oded 2011-05-23 11:13:49

+5

Sql將返回具有所有匹配行的集合,所以其他一定是錯誤的。你正在使用哪個dbms /服務器,以及如何評估結果? – faester 2011-05-23 11:14:48

+0

如果行匹配多個條件,您是否希望多次獲取相同的行?如果是這樣''UNION ALL'可能是你所需要的(雖然我不明白爲什麼這是可取的) – 2011-05-23 11:23:52

回答

0

SQL將返回滿足條件的所有行。如果您只獲得第一行,那麼這不是SQL問題,而是您的前端編程之一。給你的代碼的例外,我們可以回答你做錯了什麼。

+0

嗨@TomTom - 感謝您的回覆。在我的問題中的SQL代碼片段是我在Database Workbench 4 Lite for Firebird中使用的語句,我還沒有實現任何前端開發。 – Sebastien 2011-05-23 11:26:09

0

也許在Sebastien Smith的名字中有一個特殊字符,在您使用的工具中不會立即顯示。 (比如塞巴斯蒂安)

0

好的,我發現了這個問題。

當對數據庫進行更改時,數據庫工作臺不更新SQL編輯器窗口。我必須關閉SQL編輯器並重新打開編輯器才能看到這些變化,我注意到了@N-West和@Tim的註釋(這兩個查詢都只返回了一行)。

感謝您的回覆:)