Sql 我们如何在一个表中检索相同的数据?
我需要一个非常专业的帮助,我似乎找不到这个问题的答案,问题是,找到与至少两本其他书籍具有相同标题和出版商的书籍的标题和ISBN 按标题订购 所以基本上,所有的东西都来自书桌Sql 我们如何在一个表中检索相同的数据?,sql,oracle,Sql,Oracle,我需要一个非常专业的帮助,我似乎找不到这个问题的答案,问题是,找到与至少两本其他书籍具有相同标题和出版商的书籍的标题和ISBN 按标题订购 所以基本上,所有的东西都来自书桌 CREATE TABLE BOOK ( ISBN VARCHAR2(20), Title VARCHAR2(250) NOT NULL, YearPublished NUMBER(4) NOT NULL, PublisherName VARCHAR2(40) NOT NULL, CONSTR
CREATE TABLE BOOK
(
ISBN VARCHAR2(20),
Title VARCHAR2(250) NOT NULL,
YearPublished NUMBER(4) NOT NULL,
PublisherName VARCHAR2(40) NOT NULL,
CONSTRAINT pk_isbnP PRIMARY KEY(ISBN)
);
这是我的草稿:
select _____
from book b2
where ______ (select____ from book b2
where _____ = ______ and ______ =______)
内部查询获取有三个或更多副本的书籍的标题/出版商。外部查询使用这些结果来获取关联的ISBN。您可以在此处使用group by语句
SELECT title
,isbn
FROM BOOKS
group by title, isbn
having COUNT(1) >= 2 order by title;
步骤1:查找至少有两本书的标题和出版商组合:
SELECT title, PublisherName
FROM BOOK
GROUP BY title, PublisherName
HAVING COUNT(*) > 1
步骤2:查找具有此标题和出版商的所有其他书籍:
SELECT *
FROM Books b1
WHERE EXISTS(
SELECT title, PublisherName
FROM BOOK b2
WHERE b1.title = b2.title AND b1.PublisherName = b2.PublisherName
GROUP BY title, PublisherName
HAVING COUNT(*) > 1
)
这应该做到:
select isbn, title
from books
where (title,publishername) in(select title,publishername
from books
group by title,publishername
having count(*) >=3)
order by title;
如果您能提供您的表结构,那将很有帮助?
[title]
在(标准)SQL中是无效的标识符。谢谢。我已经使用示例数据在SQLServerManagementStudio中检查了查询。未提及所使用的问题数据库。根据Transact-SQL中的msdn,标题不是关键字<代码>标题是有效的标识符<代码>[title]不是。这个问题被标记为Oracle。好的,我认为问题在于方括号“[]”的存在,它会自动添加到Sql Server Management Studio中。通过删除括号更新了答案。希望现在一切正常:)我没有访问Oracle数据库的权限,但现在使用的所有关键字都是标准SQL。[]是oracle中的分组字符,根据我看到的文档逻辑,但所需的输出仍然没有出现:(
select isbn, title
from books
where (title,publishername) in(select title,publishername
from books
group by title,publishername
having count(*) >=3)
order by title;