MySQL:基于匹配条件(类似模式的结构)获取结果集

MySQL:基于匹配条件(类似模式的结构)获取结果集,mysql,pattern-matching,Mysql,Pattern Matching,我只想显示基于特定匹配条件的结果(仅显示遵循该模式的结果) 这是我的期望 我希望结果集ID为1到5,12到16的顺序或顺序如下所示 ID W1 W2 W3 W4 W5 1 1 43 72 10 33 2 61 38 16 68 51 3 80 54 62 87 45 4 73 39 64 77 22 5 49 82 32 56 41 12 1 43 72 10 33 13 61

我只想显示基于特定匹配条件的结果(仅显示遵循该模式的结果)

这是我的期望

我希望结果集ID为1到5,12到16的顺序或顺序如下所示

ID  W1  W2  W3  W4  W5  
1   1   43  72  10  33  
2   61  38  16  68  51  
3   80  54  62  87  45  
4   73  39  64  77  22  
5   49  82  32  56  41  

12  1   43  72  10  33  
13  61  38  16  68  51  
14  80  54  62  87  45  
15  73  39  64  77  22  
16  49  82  32  56  41  
这就是我尝试过的

SELECT T1.ID, T1.W1, T1.W2, T1.W3, T1.W4, T1.W5

FROM drvdb.scores t1
JOIN drvdb.scores t2 ON t1.ID = t2.ID

WHERE (T1.W1 ='1' AND T1.W2 = '43' AND T1.W3 = '72' AND T1.W4 = '10' AND T1.W5 = '33')
OR (T2.W1 ='61' AND T2.W2 = '38' AND T2.W3 = '16' AND T2.W4 = '68' AND T2.W5 = '51')
OR (T2.W1 ='80' AND T2.W2 = '54' AND T2.W3 = '62' AND T2.W4 = '87' AND T2.W5 = '45')
OR (T2.W1 ='73' AND T2.W2 = '39' AND T2.W3 = '64' AND T2.W4 = '77' AND T2.W5 = '22')
OR (T2.W1 ='49' AND T2.W2 = '82' AND T2.W3 = '32' AND T2.W4 = '56' AND T2.W5 = '41')

GROUP BY T1.ID
HAVING COUNT (DISTINCT T1.W1, T1.W2, T1.W3, T1.W4, T1.W5) = 1

我尝试了几个查询,但仍然得到了同样的不希望得到的结果

我想要第1行,因为它正好是1/43/72/10/33,后面是第61/38/16/68/51行,后面是第3行80/54/62/87/45,第4行73/39/64/77/22,第5行是第5行/49/82/32/56/41。我希望查询返回基于该层次结构或排名的结果。 在我的表中,我只有两个这样的层次结构

这不是有办法吗?这不可能吗?在过去的两个月里,我一直在思考如何才能做到最好……我的背很痛。 现在是呼救的时候了。 我是SQL新手,正在尝试熟悉这种语言

任何关于如何进行的想法都将不胜感激

这是我的脚本文件

CREATE DATABASE IF NOT EXISTS `drvdb`;
USE `drvdb`;


CREATE TABLE IF NOT EXISTS `scores` (
  `ID` int(11) NOT NULL AUTO_INCREMENT,
  `W1` varchar(2) DEFAULT NULL,
  `W2` varchar(2) DEFAULT NULL,
  `W3` varchar(2) DEFAULT NULL,
  `W4` varchar(2) DEFAULT NULL,
  `W5` varchar(2) DEFAULT NULL,
  PRIMARY KEY (`ID`),
  KEY `W1` (`W1`),
  KEY `W2` (`W2`),
  KEY `W3` (`W3`),
  KEY `W4` (`W4`),
  KEY `W5` (`W5`)
) ENGINE=InnoDB AUTO_INCREMENT=28 DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_0900_ai_ci;



INSERT INTO `scores` (`ID`, `W1`, `W2`, `W3`, `W4`, `W5`) VALUES
    (1, '1', '43', '72', '10', '33'),
    (2, '61', '38', '16', '68', '51'),
    (3, '80', '54', '62', '87', '45'),
    (4, '73', '39', '64', '77', '22'),
    (5, '49', '82', '32', '56', '41'),
    (6, '68', '8', '30', '35', '1'),
    (7, '20', '21', '22', '23', '24'),
    (8, '61', '38', '16', '68', '51'),
    (9, '1', '43', '72', '10', '33'),
    (10, '80', '54', '62', '87', '45'),
    (11, '49', '82', '32', '56', '41'),
    (12, '1', '43', '72', '10', '33'),
    (13, '61', '38', '16', '68', '51'),
    (14, '80', '54', '62', '87', '45'),
    (15, '73', '39', '64', '77', '22'),
    (16, '49', '82', '32', '56', '41'),
    (17, '61', '38', '16', '68', '51'),
    (18, '80', '54', '62', '87', '45'),
    (19, '49', '82', '32', '56', '41'),
    (20, '61', '38', '16', '68', '51');


您希望应用哪些规则?比如说,为什么id=9的行不在预期结果中?@forpas因为我只想提取一个特定的模式,它是1到5,12到16是唯一符合该标准的集合。ID9-10-11并不能使模式完整..但无论如何,如果我能得到一个查询,以匹配ID9-10-11的顺序,我会满足的..我希望你能得到我…像以更索引的格式提取结果一样。A1到5和12到16是唯一符合该标准的集合什么标准?我错过了什么吗?@forpas好的,这可能很简单,让我们说我只想返回ID 1和ID 2….让我们说其中(W1='1'和W2='43'和W3='72'和W4='10'和W5='33')或(W1='61'和W2='38'和W3='16'和W4='68'和W5='51'))我的问题是,我如何去掉或,这样我就可以将这两行…ID1和ID2…以更垂直的方式连接起来,就像在任何地方找到ID1和ID2返回这些结果一样…请宽容英语不是我的第一语言您需要简化您的问题。您不应该将您的问题描述为“我如何摆脱ORs,或者我可以加入这两行”-这假设摆脱ORs a)解决了您的实际问题,b)足以向我们描述您的任务,以了解如何摆脱ORs。这两种说法可能都不正确。您需要描述您的标准/为什么需要特定行。在这里猜测,您想要第1行,因为它正好是1/43/72/10/33,后面是第61/38/16/68/51行,后面是带xxx的3行。和下面的4行。试着把它分解成这样。你想应用什么规则?比如说,为什么id=9的行不在预期结果中?@forpas因为我只想提取一个特定的模式,它是1到5,12到16是唯一符合该标准的集合。ID9-10-11并不能使模式完整..但无论如何,如果我能得到一个查询,以匹配ID9-10-11的顺序,我会满足的..我希望你能得到我…像以更索引的格式提取结果一样。A1到5和12到16是唯一符合该标准的集合什么标准?我错过了什么吗?@forpas好的,这可能很简单,让我们说我只想返回ID 1和ID 2….让我们说其中(W1='1'和W2='43'和W3='72'和W4='10'和W5='33')或(W1='61'和W2='38'和W3='16'和W4='68'和W5='51'))我的问题是,我如何去掉或,这样我就可以将这两行…ID1和ID2…以更垂直的方式连接起来,就像在任何地方找到ID1和ID2返回这些结果一样…请宽容英语不是我的第一语言您需要简化您的问题。您不应该将您的问题描述为“我如何摆脱ORs,或者我可以加入这两行”-这假设摆脱ORs a)解决了您的实际问题,b)足以向我们描述您的任务,以了解如何摆脱ORs。这两种说法可能都不正确。您需要描述您的标准/为什么需要特定行。在这里猜测,您想要第1行,因为它正好是1/43/72/10/33,后面是第61/38/16/68/51行,后面是带xxx的3行。和下面的4行。试着把它分解成这样。