我有以下表格:SQL多個子查詢的WHERE子句
address_components(表)
ADDRESS_ID STREET_NUMBER STREET_NAME
-----------------------------------------------------
001 1402 Motz
002 505 31st
003 4100 Stimmel
屬性(表)
ID ATTRIBUTE_DEFINITION_ID VALUE
----------------------------------------------------------------
001 Lot 546
001 SubDiv Avondale Spring
002 Lot 546
002 SubDiv Garden
003 Lot 131
003 SubDiv Avondale Spring
而且下面的SQL語句:
SELECT
street_number,street_name
FROM
address_components a, attributes attr
WHERE
a.address_id = attr.id
AND EXISTS (SELECT 1 FROM attributes
WHERE attr.attribute_definition_id = 'Lot'
AND attr.value = '546')
AND EXISTS (SELECT 1 FROM attributes
WHERE attr.attribute_definition_id = 'SubDiv'
AND attr.value = 'Avondale spring')
I a m試圖選擇address_components行「001」,因爲我試圖檢索同時具有「lot = 546」和SubDiv = Avondale Spring「屬性條目的行。不是,但兩個屬性都必須存在。
查詢返回無匹配;但是,當我使用單個子查詢(排除2個子查詢中的1個)查詢時,所請求的行將針對該單個查詢返回。
[不良習慣踢:使用舊樣式的JOIN(http://sqlblog.com/blogs/aaron_bertrand/archive/2009/10/08/bad -habits-to-kick-using-old-style-joins.aspx) - 在ANSI-** 92中,舊式*逗號分隔的表*樣式列表被替換爲* proper * ANSI'JOIN'語法** SQL標準(**超過20年**前),不鼓勵使用 –
哪種RDBMS適用於?請添加一個標籤來指定您是使用'mysql','postgresql','sql-server','oracle'還是'db2' - 或者其他的東西。 –