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”,这是一个空的结果集。