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
);
我有两个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
);