Sql 使用join&;然后只使用子查询?
好的,我正在做一些SQL修订,我应该做一个查询“使用联接而不是子查询,列出出版心理学书籍的出版商。”然后得出以下结论:Sql 使用join&;然后只使用子查询?,sql,oracle,oracle11g,oracle-sqldeveloper,Sql,Oracle,Oracle11g,Oracle Sqldeveloper,好的,我正在做一些SQL修订,我应该做一个查询“使用联接而不是子查询,列出出版心理学书籍的出版商。”然后得出以下结论: SELECT DISTINCT p.pub_name, t.category FROM publishers p INNER JOIN titles t ON p.pub_id=t.pub_id WHERE t.category='psychology'; 下一部分是使用子查询,但我不确定如果不在子查询本身中使用联接,您将如何做到这一点?还有,我如何打印出每一个第二作者 是数
SELECT DISTINCT p.pub_name, t.category
FROM publishers p
INNER JOIN titles t
ON p.pub_id=t.pub_id
WHERE t.category='psychology';
下一部分是使用子查询,但我不确定如果不在子查询本身中使用联接,您将如何做到这一点?还有,我如何打印出每一个第二作者
是数据库的粘贴库
这就是模式(我知道关于折扣表的模式存在问题,而不是我的模式)
您可以使用IN子句:
SELECT
p.pub_name
FROM
publishers p
WHERE
p.pub_id IN (SELECT pub_id FROM titles t WHERE t.category = 'psychology)
或者,EXISTS子句稍微复杂一些,但通常性能更好:
SELECT
p.pub_name
FROM
publishers p
WHERE
EXISTS (SELECT 1 FROM titles t WHERE t.pub_id = p.pub_id AND t.category = 'psychology)
要获得第二作者,请执行以下操作:
SELECT
a.au_fname,
a.au_lname
FROM
publishers p
JOIN
titles t ON t.pub_id = p.pub_id
JOIN
title_author ta ON ta.title_id = t.title_id
JOIN
authors a ON a.au_id = ta.au_id
WHERE
t.category = 'psychology'
AND a.au_ord = 2
您可以使用IN子句:
SELECT
p.pub_name
FROM
publishers p
WHERE
p.pub_id IN (SELECT pub_id FROM titles t WHERE t.category = 'psychology)
或者,EXISTS子句稍微复杂一些,但通常性能更好:
SELECT
p.pub_name
FROM
publishers p
WHERE
EXISTS (SELECT 1 FROM titles t WHERE t.pub_id = p.pub_id AND t.category = 'psychology)
要获得第二作者,请执行以下操作:
SELECT
a.au_fname,
a.au_lname
FROM
publishers p
JOIN
titles t ON t.pub_id = p.pub_id
JOIN
title_author ta ON ta.title_id = t.title_id
JOIN
authors a ON a.au_id = ta.au_id
WHERE
t.category = 'psychology'
AND a.au_ord = 2
哦,是的,我记得去年做了EXISTS,谢谢。Np:-)看一下最后一个查询的第二个答案,看看这是否能满足您的需要。我得走了,希望能有帮助!另外,您会注意到我遗漏了DISTINCT,因为我不知道在本例中实际需要它。只有在你绝对必要的情况下才使用它,因为你最终会受到性能的影响,并且为了可读性:-)我得走了,祝你好运,祝你有一个美好的一天!哦,是的,我记得去年做了EXISTS,谢谢。Np:-)看一下最后一个查询的第二个答案,看看这是否能满足您的需要。我得走了,希望能有帮助!另外,您会注意到我遗漏了DISTINCT,因为我不知道在本例中实际需要它。只有在你绝对必要的情况下才使用它,因为你最终会受到性能的影响,并且为了可读性:-)我得走了,祝你好运,祝你有一个美好的一天!