我一直在努力编写一个 SQL 查询,它会返回重复的中奖彩票号码。
我有一个名为 WinningLotteryNumbers 的 SQL 表和一个名为 WinningNumbers 且数据类型为 vchar(14)
的列。我以这种格式存储了 WinningNumber:01-02-03-04-05
。
我的问题是,假设我在列中存储了 02-04-06-08-10
的 WinningNumber。这 5 个数字很幸运,几天后再次抽出,但顺序不同,即 06-02-10-08-04
。如何查询该列并返回所有相同但顺序不同的 WinningNumbers。
我希望我的问题和我自己脑子里的一样清楚。在此先感谢您的帮助!
最佳答案
这很痛苦。让我建议这种方法:
select newWLN, count(*) as cnt
from (select LotteryNumber, group_concat(numpart order by numpart separator '-') as NewWLN
from (select wln.LotteryNumber,
substring_index(substring_index(wln.LotteryNumber, '-', n.n), '-', -1) as numpart
from WinningLotteryNumbers wln cross join
(select 1 as n union all select 2 union all select 3 union all select 4 union all select 5
) n
) wln
group by LotteryNumber
) nwln
group by newWLN
having count(*) > 1
order by count(*) desc;
这是一种蛮力方法。它将彩票号码分成每个彩票号码的五个组成部分。然后它按顺序重新组合它们。最后一步只是聚合以计算重复项。
关于mysql - 将返回重复彩票号码的 SQL 查询,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/23790939/