使用查询结果多次查询另一个表(MySQL)

时间:2019-06-08 18:57:54

标签: mysql

我有两个表,我想得到一个合并了两个表中信息的结果。 在table_one中,我有4列:country_code INT(3),state_code INT(3),town_code INT(3)和VARCHAR(255)类

在table_two中,我又有4列:country_code INT(3),state_code INT(3),town_code INT(3)和名称VARCHAR(255)。

这两个表不能合并,因为将来由于它们有不同的用途,我将需要在每个表中添加列。

我正在尝试编写一个SQL查询,以最终获得以下数据的列表/元组:country_code,state_code,town_code,类,名称。我正在寻找一种解决方案,使用table_one查询处于特定状态的所有学生,然后搜索这些学生的3个识别码,以获取每个学生在table_two中的姓名。我已经尝试过使用JOIN和UNION命令,但似乎还无法正常工作。

Sample Data

table_one
country_code      state_code    town_code    class
    001              004           001         9
    074              006           003         3
    001              003           001         7

table_two
country_code      state_code    town_code    name
    001              004           001       John Doe
    074              006           003       Jane Doe
    001              003           001       First Last

我需要帮助的部分: 查询(非SQL语法):查找居住在country_code = 001中的所有学生的country_code,state_code,town_code,班级和姓名

Expected Result
country_code      state_code    town_code    class      name
    001              004           001         9        John Doe
    001              003           001         7        First Last

2 个答案:

答案 0 :(得分:1)

简单的连接就足够了:

    SELECT a.country_code,
           a.state_code,
           a.town_code,
           a.class,
           b.name
      FROM table_one a
      JOIN table_two b
        ON a.country_code = b.country_code
       AND a.state_code = b.state_code
       AND a.town_code = b.town_code
     WHERE a.country_code = ?

输出:

+--------------+------------+-----------+-------+------------+ | country_code | state_code | town_code | class | name | +--------------+------------+-----------+-------+------------+ | 1 | 4 | 1 | 9 | John Doe | | 1 | 3 | 1 | 7 | First Last | +--------------+------------+-----------+-------+------------+

答案 1 :(得分:1)

您需要一个内部联接:

select t1.*, t2.name
from table_one t1 inner join table_two t2
on t2.country_code = t1.country_code and t2.state_code = t1.state_code and t2.town_code = t1.town_code

您可以添加WHERE子句以应用您的条件