Mysql sql获取两个元素
我有以下sql表:Mysql sql获取两个元素,mysql,sql,sql-server,math,Mysql,Sql,Sql Server,Math,我有以下sql表: | ID | numbers | |----|-----------------------------| | 1 | 1,3,19,23,28,32,39,42,60,80 | | 2 | 1,3,18,24,29,33,40,43,61,80 | | 3 | 1,2,3,25,30,34,41,44,62,78 | 在数字中,我有一个包含10个数字的字符串 我想在SQLServer或MySQL中获得所有两个元素(如果可能的
| ID | numbers |
|----|-----------------------------|
| 1 | 1,3,19,23,28,32,39,42,60,80 |
| 2 | 1,3,18,24,29,33,40,43,61,80 |
| 3 | 1,2,3,25,30,34,41,44,62,78 |
在数字中,我有一个包含10个数字的字符串
我想在SQLServer或MySQL中获得所有两个元素(如果可能的话,还有三个、四个等)
例如,对于两个元素:
- 所有行1,3个表(3次)
- 1、80出现在第一行和第二行(2次)
谢谢是的,把你的号码分成几行会让事情变得更简单。如果您使用的是MySQL,则可以使用如下查询:
CREATE TABLE mytable2 AS
SELECT
ID, SUBSTRING_INDEX(SUBSTRING_INDEX(numbers, ',', n),',',-1) AS number
FROM
mytable CROSS JOIN (SELECT 1 AS n
UNION ALL SELECT 2 AS n
UNION ALL SELECT 3 AS n
UNION ALL SELECT 4 AS n
UNION ALL SELECT 5 AS n
UNION ALL SELECT 6 AS n
UNION ALL SELECT 7 AS n
UNION ALL SELECT 8 AS n
UNION ALL SELECT 9 AS n
UNION ALL SELECT 10 AS n) d;
| appears | numbers |
|---------|---------------|
| 3 | 3,1 |
| 2 | 80 |
| 1 | 43,23,40..... |
(如果所有数字正好包含10个数字,这将起作用,如果数量较少,则此查询需要一些改进)。然后,您可以计算每个数字出现的时间:
SELECT number, COUNT(*) as appears
FROM mytable2
GROUP BY number
ORDER BY appears DESC
您可以根据它们出现的次数对编号进行分组:
SELECT
appears, GROUP_CONCAT(number) AS numbers
FROM (
SELECT number, COUNT(*) as appears
FROM mytable2
GROUP BY number
ORDER BY appears DESC
) g
GROUP BY
appears
ORDER BY
appears DESC
(仅限MySQL)结果如下:
CREATE TABLE mytable2 AS
SELECT
ID, SUBSTRING_INDEX(SUBSTRING_INDEX(numbers, ',', n),',',-1) AS number
FROM
mytable CROSS JOIN (SELECT 1 AS n
UNION ALL SELECT 2 AS n
UNION ALL SELECT 3 AS n
UNION ALL SELECT 4 AS n
UNION ALL SELECT 5 AS n
UNION ALL SELECT 6 AS n
UNION ALL SELECT 7 AS n
UNION ALL SELECT 8 AS n
UNION ALL SELECT 9 AS n
UNION ALL SELECT 10 AS n) d;
| appears | numbers |
|---------|---------------|
| 3 | 3,1 |
| 2 | 80 |
| 1 | 43,23,40..... |
请看小提琴。1。请在问题中发布所有相关代码,而不是在外部文件中。(请将其裁剪至演示问题所需的最低限度后张贴。)。在stackoverflow.com上,“有些东西不起作用”不能作为问题的描述。请准确地描述你期望发生的事情,并准确地描述发生的事情。你应该使用一个能让你的问题更容易解决的方法。