gpt4 book ai didi

php - 查询行中指定列(所有整数)的总和小于指定整数

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

我正在编写一个单词搜索程序。

我的数据库设置为MyISAM具有一张表(单词)结构

WordID | String | A | B | ... | Z |
------------------------------------
int varchar int int ... int

其中 A - Z 列的值是该字母在字符串中出现的次数。

要编写一个查询来查找由指定(但动态 - 用户选择的)字符集(包括通配符)组成的所有可能单词,即:“Bu!!er”应该返回,但、屁股、公牛等

哪里

 S is the set of characters specified that we can use
W is the set of characters in a word

我需要查询数据库中的所有字符串

 # of occurences in the word for each specified character (not including "!") is less than number of occurrences of that character in the specified string
W_k < S_k where k is each character specified

# of occurrences of letters not specified in the specified string are in SUM less than the total occurrences of the wildcard character ("!") in the specified string 
W_q < S_! where q is each character not specified and S_! total amount of occurrences of "!".

对于 WHERE 语句的第一部分 (W_k < S_k)对于 bu!!er 语句将是

 `B` <= 1 AND `U` <= 1 AND `E` <= 1 AND `R` <= 1

第二部分

 `A` + `C` + `D` + ... + `Z` <= 2

查询的完整Where部分变成

  ( ( `A` + (IF(`B`-1 < 0, 0, `B`-1)) + `C` + `D` + (IF(`E`-1 < 0, 0, `E`-1)) + `F` + `G` + `H` + `I` + `J` + `K` + `L` + `M` + `N` + `O` + `P` + `Q` + (IF(`R`-1 < 0, 0, `R`-1)) + `S` + `T` + (IF(`U`-1 < 0, 0, `U`-1)) + `V` + `W` + `X` + `Y` + `Z` ) <= 2 ) 

还有比这更好的方法吗?

最佳答案

 `A` + `C` + `D` + ... + `Z`

使用非规范化?将完整长度存储在单独的列中。

 `TOTAL` <= 5

作为旁注:

您的架构对可能的查询限制太多 - 尽管对于这项工作来说已经足够了。最好将所有单词保留在内存中(每个服务器实例一个)并对单词进行“全表扫描”或“索引扫描”。

关于php - 查询行中指定列(所有整数)的总和小于指定整数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/33418748/

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