0

SELECT语句运行良好,但我希望能够重复它以进一步完善搜索。

SELECT id1 
FROM table1 
WHERE id2 IN (SELECT id 
              FROM table2 
              WHERE name="country" 
                AND value="Mexico")

例如,如果我只想在墨西哥找到有“海滩”的地点,那就是:

name="features" AND value="Beaches"

SELECT...我将如何通过我的陈述进一步削减结果?

4

2 回答 2

1

可能最好的方法是执行一个新查询并添加额外的过滤。可以在客户端应用程序中“手动”过滤,但在大多数情况下效率可能会降低。所以运行一个有更多限制的新查询:

SELECT id1 FROM table1 WHERE id2 IN 
        (SELECT id FROM table2 WHERE 
               name="country" AND 
               value="Mexico" AND
               name2 = "features" AND 
               value2 = "Beaches" )

请注意,我将两个新列名称更改为不同的名称(原始查询结果不会包含给定原始名称的其他值)。如果通过“优化”,您想添加,那么查询应该是:

SELECT id1 FROM table1 WHERE id2 IN 
        (SELECT id FROM table2 WHERE 
               ( name="country" AND 
               value="Mexico" ) OR
               ( name = "features" AND 
               value = "Beaches" ))
于 2012-07-27T17:06:54.070 回答
0

Vecta,您需要通过添加额外的 IN 来扩展您的查询:

SELECT id1 
FROM table1 
WHERE id2 IN (SELECT id 
          FROM table2 
          WHERE name="country" 
            AND value="Mexico")
AND id2 IN (SELECT id 
          FROM table2 
          WHERE name="featues" 
            AND value="Beach")

但请考虑到,这将导致性能迅速下降。:-)

于 2012-07-27T17:22:28.177 回答