重复SELECT语句

时间:2012-07-27 17:01:38

标签: mysql

这个SELECT声明工作正常,但我希望能够重复它以进一步完善搜索。

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

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

name="features" AND value="Beaches"

...我将如何使用SELECT声明进一步削减结果?

2 个答案:

答案 0 :(得分: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" ))

答案 1 :(得分: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")

但请注意,这会导致性能下降很快。 : - )