我有以下表格: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' - 或者其他的东西。 –