0

我知道这个问题已经在这里问过了,但我无法从以前的答案中弄清楚这个问题。

我们有 2 张桌子:

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

现在我想查询 members_details 并选择来自同一国家的城市,这里应该是“AA”、“EE”和“FF”的结果(因为成员来自美国)

我知道如何比较来自不同表的不同列,但是在这里我们需要以某种方式检查第二个表“member_id”和第一个表“id (country_iso_3)”!

4

3 回答 3

1

只是JOIN这两个表,其中有一个WHERE子句表示您想要获得它的城市的国家/地区,如下所示:

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

SQL 小提琴演示

于 2012-11-03T09:01:12.167 回答
1
Select city from members LEFT JOIN members_details 
ON members.id = members_details.memberid Where country_iso_3 = 'USA' 
于 2012-11-03T09:03:23.720 回答
0

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

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
)
于 2012-11-03T09:25:30.757 回答