我有一个订单表(对于每个订单(transaction_id),有client_id和item_id和quantity),我需要找到一组货物的完全相同的订单和订单中的数量
CREATE TABLE IF NOT EXISTS orders (client_id varchar(10),
item_id varchar(10), quantity int, transaction_id varchar(10));
INSERT INTO orders values
('CL1111','111',1, '1001'),
('CL1111','222',2,'1001'),
('CL1111','333',1,'1001'),
('CL2222','111',2,'1002'),
('CL2222','222',1,'1002'),
('CL2222','333',1,'1002'),
('CL3333','111',1,'1003'),
('CL3333','222',2,'1003'),
('CL3333','333',1,'1003'),
('CL3333','444',1,'1003'),
('CL4444','111',1,'1004'),
('CL4444','222',2,'1004'),
('CL4444','333',1,'1004'),
('CL5555','111',1,'1005'),
('CL5555','222',2,'1005'),
('CL6666','111',1,'1006'),
('CL6666','222',2,'1006'),
('CL6666','333',1,'1007')
客户端ID | 项目ID | 数量 | 事务ID |
---|---|---|---|
CL1111 | 一一一 | 1 | 一千零一 |
CL1111 | 二百二十二 | 二 | 一千零一 |
CL1111 | 三百三十三 | 1 | 一千零一 |
CL2222 | 一一一 | 二 | 一千零二 |
CL2222 | 二百二十二 | 1 | 一千零二 |
CL2222 | 三百三十三 | 1 | 一千零二 |
CL3333 | 一一一 | 1 | 一千零三 |
CL3333 | 二百二十二 | 二 | 一千零三 |
CL3333 | 三百三十三 | 1 | 一千零三 |
CL3333 | 四四四 | 1 | 一千零三 |
CL4444 | 一一一 | 1 | 一千零四 |
CL4444 | 二百二十二 | 二 | 一千零四 |
CL4444 | 三百三十三 | 1 | 一千零四 |
CL5555 | 一一一 | 1 | 一千零五 |
CL5555 | 二百二十二 | 二 | 一千零五 |
CL6666 | 一一一 | 1 | 一千零六 |
CL6666 | 二百二十二 | 二 | 一千零六 |
CL6666 | 三百三十三 | 1 | 一千零七 |
相同的命令如下:(1001和1004),(1005和1006)现在我不知道,如何离开订单,其中完全相同的item_id,数量和项目集.
4条答案
按热度按时间icnyk63a1#
试试这个查询。为了得到可靠的结果,聚集中的Order子句是必不可少的。
cnt〉1的行具有相同的行(具有相同数量的相同项目)。
使用测试数据,为transaction_id1001 -1004和1005-1006找到2个相同的组(不是图片中的绿色)
结果是
| 客户端ID|事务ID|项目表|rn|碳纳米管|
| --------------|--------------|--------------|--------------|--------------|
| CL5555|一千零五|111(1)、222(2)|1|二|
| CL6666|一千零六|111(1)、222(2)|二|二|
| CL1111|一千零一|111(1)、222(2)、333(1)|1|二|
| CL4444|一千零四|111(1)、222(2)、333(1)|二|二|
| CL3333|一千零三|111(1)、222(2)、333(1)、444(1)|1|1|
| CL2222|一千零二|111(2)、222(1)、333(1)|1|1|
| CL6666|一千零七|333(1)|1|1|
测试数据
ebdffaop2#
您的示例代码不包括数量!下面是一个代码,它会产生与表中包含的相同订单一样多的行:
wfsdck303#
请检查此查询,它在dbfiddle中返回正确的行
我不知道客户端有多个事务,但在您的示例中,客户端CL 5555和CL 6666不匹配,即使它们有相同的事务1005和1006。因此,这里只比较具有一个不同事务的客户端。
wbrvyc0a4#