Select 给定键列表的一堆数据

Select a bunch of data given a list of key

刚开始学习SQL遇到了一个问题。我是 SQL 的新手,我什至不知道要 google 使用哪些关键字来解决这个问题。

我有两个table:

  1. table一个
id | name
01 | abc
02 | ahb
03 | aen
04 | aev
05 | aca
06 | aee
07 | abc
08 | ahr

还有第二个:

  1. tableb
group | name_id
A     |    01
A     |    02
A     |    03
A     |    04
A     |    05
A     |    06
B     |    07
B     |    08

假设我想 SELECT 所有名称都属于 A 组。

我写了下面的代码:

SELECT name FROM tablea WHERE id = (SELECT name_id from tableb WHERE group = "A");

然而,结果只给我一行。

您必须使用 IN 而不是 =

SELECT name FROM tablea WHERE id IN (SELECT name_id from tableb WHERE group = "A");

对于您的示例数据,查询应该出错 - 因为子查询 returns 多于一行,这在此处是不期望的,因为您使用的是 = .

如果 name_idtableb 中的唯一列,则 join 是合适的:

select a.name
from tablea a
inner join tableb b on b.name_id = a.id
where b.group = 'A'

否则我推荐exists:

select a.name 
from tablea a
where exists (select 1 from tableb b where b.name_id = a.id and b.group = 'A')