Sql 我们如何在一个表中检索相同的数据?

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

我需要一个非常专业的帮助,我似乎找不到这个问题的答案,问题是,找到与至少两本其他书籍具有相同标题和出版商的书籍的标题和ISBN

按标题订购

所以基本上,所有的东西都来自书桌

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;