SQL 连接 Table 的子查询通过引用另一个 Table 返回自身

SQL Subquery That Joins Table Back On Itself By Referencing Another Table

我有两个table;一本杂志 table,它通过在两个 table 中共享的 Publisher_ID 列链接到出版商 table。

The Magazine table 有一个类别栏,具体取决于该特定杂志关注的内容(即时尚、名人、汽车、运动、狩猎等)。许多出版商的杂志涵盖许多类别,但有些只有少数。

我想 运行 查询 select “汽车”类别中排名前 100 位的杂志,然后将这些杂志加入到其关联的出版商中,但是select 其余出版商的头衔,无论这些杂志是否是汽车。

即我想要 select 来自出版商的所有杂志,这些杂志来自前 100 份以汽车为中心的 selected 杂志。

我希望的结果是来自杂志的所有专栏及其关联的加入的出版商 table 专栏,并且应该产生远远超过 100 种杂志,包括不仅仅是“汽车”的类别 BUT 仅来自 至少有一个 杂志标题属于“汽车”类别的出版商,不包括任何不属于“汽车”类别的出版商(及其相关杂志)出版汽车杂志。

我正在使用的查询尝试在这里:

SELECT Magazine.*,Publisher.*
FROM 
    Magazine
INNER JOIN 
    Publisher
ON
    Magazine.publisher_id = publisher.publisher_id
WHERE (SELECT Magazine.category
       FROM Magazine
       WHERE Magazine.category = 'cars' 
       LIMIT 100)
;

我得到的输出是这样的

Single-row subquery returns more than one row.

对不起,我的阐述很抱歉,但我想尽可能描述我想要实现的目标。

你不说这100本杂志你是怎么选的。但是对于100本任意本杂志,可以使用IN或者EXISTS:

SELECT m.*, p.*
FROM Magazine m INNER JOIN 
     Publisher p
     ON m.publisher_id = p.publisher_id
WHERE p.publisher_id IN (SELECT m2.publisher_id
                         FROM Magazine m2
                         WHERE m2.category = 'cars' 
                         LIMIT 100
                        );