Mysql 重复SELECT语句

Mysql 重复SELECT语句,mysql,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
语句工作得很好,但我希望能够重复它以进一步优化搜索

SELECT id1 
FROM table1 
WHERE id2 IN (SELECT id 
              FROM table2 
              WHERE name="country" 
                AND value="Mexico")
例如,如果我只想在墨西哥找到有“海滩”的地方,应该是:

name="features" AND value="Beaches"

…我该如何使用我的
SELECT
语句进一步对结果进行排序?

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

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" ))

Vecta,您需要通过添加其他插件来扩展查询:

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")

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

我错过什么了吗?只需将这些过滤器添加到查询中(这些值存储在哪个表中),您就可以对“优化”进行更多的澄清。如上所述,您要求的是
value=“Mexico”和value=“beats”
,这是一个空的结果集。请标记,OP想要的记录同时满足这两个条件。您提供的是备选方案。@KubaWyrostek:第一个查询是试图显示OP特别要求的内容。是的,第二种是另一种选择。如前所述,OP实际上无法使用非空结果集来完成。为了准确地跟踪请求,OP需要“value=“Mexico”和value=“beads”,这是一个空的结果集。