sql—如何获取表中列值与mysql中select查询的行相匹配的所有行

nqwrtyyt  于 2021-06-15  发布在  Mysql
关注(0)|答案(1)|浏览(334)

假设我有一张叫“人”的table。我想在“镇”栏中选择所有有一定价值的人。然后我要选择另一个表中的所有行,这些行的值存在于上一个选择中。

jutyujz0

jutyujz01#

两个选项,都涉及一个子查询。。。
使用 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'
)

就我个人而言,我会选择第一个选项,但根据表类型和索引的不同,您应该运行一些explain计划,看看哪一个性能更好。

相关问题