gpt4 book ai didi

php - 在 MySQL 中从 m 个数字的字符串中搜索匹配 n 个数字

转载 作者:行者123 更新时间:2023-11-29 12:24:19 24 4
gpt4 key购买 nike

我的 MySQL 数据库中有大约 500 万行与以下系统匹配

n1-n2-n3-n4-n5(例如 8-23-43-12-3),其中每个数字对于该序列都是唯一的。另外,每个数字的范围是1到99。

我需要一种方法来检索 MySQL 数据库中五个数字中的三个匹配的所有行。例如,用户输入 4-23-65-82-3,我想返回共享输入的五个数字中的任意 3 个的所有行,因此 4-65-12-49-82 场比赛、34-23-76-3-65 场比赛等.

我的表格如下:

number_table (iduuid Five_numbers first_number 第二个数字第三个数字第四个数字第五个数字)

到目前为止我已经尝试过:

  1. 循环遍历每一行,并匹配 first_number 为用户提交的五个数字中任意一个的任何行。这实在是太不聪明了!

  2. 与 MySQL 中的 RegExp 匹配,但这需要包含所有可能组合的 SQL 语句。这不太聪明,但是如果有人有一个更高效的 MySQL REGEXP,我可以使用它,那就太好了。

我本质上是在寻找一个 SQL 解决方案,因为我不必担心内存耗尽,SQL 执行会更快,而且我想将它放在一个 View 中,以便我可以在其上执行一些命令。

对于冗长的帖子,我深表歉意,但我想提供尽可能多的信息。

谢谢!

最佳答案

假设您的用户输入为 n1、n2、n3、n4、n5,您可以编写如下 SQL:

select id, uuid, five_numbers from
(select *,
if(first_number in (n1,n2,n3,n4,n5), 1, 0) +
if(second_number in (n1,n2,n3,n4,n5), 1, 0) +
if(third_number in (n1,n2,n3,n4,n5), 1, 0) +
if(fourth_number in (n1,n2,n3,n4,n5), 1, 0) +
if(fifth_number in (n1,n2,n3,n4,n5), 1, 0) as total
from number_table) as t
where total >= 3

因此,如果这五个数字中的任何一个具有值,那么总数就会加 1。然后,您可以使用包含 3 个或更多用户输入数字的数字来过滤行

关于php - 在 MySQL 中从 m 个数字的字符串中搜索匹配 n 个数字,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/28574123/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com