如何获取表的所有行的列值与MySql中的select查询的行匹配

时间:2018-12-05 03:35:22

标签: mysql sql database

说我有一个称为“人”的表。我想在“镇”列中选择所有具有特定值的人。然后,我想选择不同表中的所有行,这些行的值在上一个选择中存在。

1 个答案:

答案 0 :(得分:0)

两个选项都涉及一个子查询...

  1. 使用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
    )
    
  2. 使用IN子句

    SELECT * from `a different table` dt
    WHERE dt.value IN (
      SELECT p.value FROM people p
      WHERE p.town = 'a certain value'
    )
    

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