说我有一个称为“人”的表。我想在“镇”列中选择所有具有特定值的人。然后,我想选择不同表中的所有行,这些行的值在上一个选择中存在。
答案 0 :(得分:0)
两个选项都涉及一个子查询...
使用EXISTS
子句
SELECT * FROM `a different table` dt
WHERE EXISTS (
SELECT 1 FROM people p
WHERE p.town = 'a certain value'
AND p.value = dt.value -- you didn't specify column names
)
使用IN
子句
SELECT * from `a different table` dt
WHERE dt.value IN (
SELECT p.value FROM people p
WHERE p.town = 'a certain value'
)
就个人而言,我会选择第一个选项,但根据您的表类型和索引,您应该运行一些解释计划,以查看哪个性能更高。