我有两个表,我想得到一个合并了两个表中信息的结果。 在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
答案 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子句以应用您的条件