Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/sql/84.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
MySQL连接查询-_Mysql_Sql - Fatal编程技术网

MySQL连接查询-

MySQL连接查询-,mysql,sql,Mysql,Sql,我知道这个问题在这里已经问过了,但我无法从前面的答案中找出这个问题 我们有两张桌子: members ----------------------- | id | country_iso_3 | ----------------------- 1 USA 2 DZA 3 FRA 4 ILI 5 USA 6 USA members_details ----------------------- | member_id | city

我知道这个问题在这里已经问过了,但我无法从前面的答案中找出这个问题

我们有两张桌子:

members
-----------------------
| id | country_iso_3 |
-----------------------
  1    USA
  2    DZA
  3    FRA
  4    ILI
  5    USA
  6    USA


members_details
-----------------------
| member_id | city    |
-----------------------
  1          AA
  2          BB
  3          CC
  4          DD
  5          EE
  6          FF
现在我想查询成员的详细信息并选择来自相同国家的城市,这里的“AA”、“EE”和“FF”应该是结果(因为成员来自美国)


我知道如何比较不同表中的不同COL,但这里我们需要检查第二个表'member_id'和第一个表'id(country_iso_3)'

只需
将这两个表连接起来,在其中添加一个
WHERE
子句,用于您想要获得的国家/地区的城市,如下所示:

SELECT md.city 
FROM members m
INNER JOIN members_details md ON m.id = md.memberid
WHERE m.country_iso_3 = 'USA'

这不仅适用于美国,而且适用于任何不止一次列出的国家:

SELECT d.city
FROM members m,
     members_details d
WHERE d.member_id = m.id
  AND m.country_iso_3 IN (
    SELECT country_iso_3
    FROM members
    GROUP BY 1
    HAVING count(1) > 1
)
SELECT d.city
FROM members m,
     members_details d
WHERE d.member_id = m.id
  AND m.country_iso_3 IN (
    SELECT country_iso_3
    FROM members
    GROUP BY 1
    HAVING count(1) > 1
)