Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/mysql/71.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/sql/78.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
在mysql中查找匹配对的sql查询_Mysql_Sql - Fatal编程技术网

在mysql中查找匹配对的sql查询

在mysql中查找匹配对的sql查询,mysql,sql,Mysql,Sql,社区假设问题: 如果一个图书馆有两本书(第一册,第二册),一年内有多少顾客同时借了这两本书 表格 CREATE TABLE `check0` ( `lib_card_num` int NOT NULL, `first_name` varchar(45) NOT NULL, `last_name` varchar(45) NOT NULL, `checkout_timestamp_utc` timestamp(6) NOT NULL, `due_date` date NOT N

社区假设问题:

如果一个图书馆有两本书(第一册,第二册),一年内有多少顾客同时借了这两本书

表格

CREATE TABLE `check0` (
  `lib_card_num` int NOT NULL,
  `first_name` varchar(45) NOT NULL,
  `last_name` varchar(45) NOT NULL,
  `checkout_timestamp_utc` timestamp(6) NOT NULL,
  `due_date` date NOT NULL,
  `type` varchar(10) DEFAULT NULL,
  `name` varchar(45) DEFAULT NULL,
  `unique_id` int NOT NULL,
  PRIMARY KEY (`unique_id`),
  KEY `parent_index1` (`lib_card_num`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_0900_ai_ci
;
数据

INSERT INTO testlibrary.check0
(lib_card_num,FIRST_NAME,LAST_NAME,CHECKOUT_TIMESTAMP_UTC,DUE_DATE,TYPE,NAME,UNIQUE_ID)
VALUES
(1,'ROB','BLOW',DATE_ADD(current_timestamp(), INTERVAL -30 day),DATE_ADD(current_date(),INTERVAL -5 DAY),'PHYSICAL','SHEBA',100),
(1,'ROB','BLOW',DATE_ADD(current_timestamp(), INTERVAL -30 day),DATE_ADD(current_date(),INTERVAL -5 DAY),'ELECTRONIC','THUNDERPOINT',101),
(2,'JOHN','DOE',DATE_ADD(current_timestamp(), INTERVAL -15 day),DATE_ADD(current_date(),INTERVAL -1 DAY),'ELECTRONIC','THUNDERPOINT',102),
(2,'JOHN','DOE',DATE_ADD(current_timestamp(), INTERVAL -15 day),DATE_ADD(current_date(),INTERVAL -1 DAY),'PHYSICAL','SHEBA',103),
(3,'JANE','DOE',DATE_ADD(current_timestamp(), INTERVAL -45 day),DATE_ADD(current_date(),INTERVAL -20 DAY),'PHYSICAL','SHEBA',104),
(3,'JANE','DOE',DATE_ADD(current_timestamp(), INTERVAL -45 day),DATE_ADD(current_date(),INTERVAL -20 DAY),'ELECTRONIC','THUNDERPOINT',105)
也许试试这个

select count(lib_card_num) as result
from
(select distinct check0.lib_card_num from sys.check0
where check0.checkout_timestamp_utc in 
(SELECT checkout_timestamp_utc 
 FROM 
(SELECT check0.checkout_timestamp_utc, COUNT(check0.checkout_timestamp_utc) count 
 FROM sys.check0
 GROUP BY check0.checkout_timestamp_utc) sub1
WHERE sub1.count > 1)) sub2;
如果一个图书馆有两本书(第一册,第二册),一年内有多少顾客同时借了这两本书

这听起来不是很理论化。但您可以使用聚合来实现这一点。但是,您的描述没有名为
customer
book\u title
的列,因此您需要根据数据模型进行调整。这毕竟是一个理论问题:

要让客户同时拥有这两本书:

select customer
from check0 c
where book_title in ('book 1', 'book 2')
group by customer
having count(distinct book_title) = 2;
然后,您可以使用附加的子查询对其进行计数:

select count(*)
from (select customer
      from check0 c
      where book_title in ('book 1', 'book 2')
      group by customer
      having count(distinct book_title) = 2
     ) c;

你的问题和你的数据没有任何关系。数据中没有明显的“客户”或“账簿”。幸运的是,这是一个理论问题。