gpt4 book ai didi

php - mysql的简单数据库查询

转载 作者:搜寻专家 更新时间:2023-10-30 20:05:43 26 4
gpt4 key购买 nike

我在“用户”表中有一个数据库包含 4 个字段 id 、 name 、 gender 、 language
前任。 (数据库条目)

1   jhon     male     en-sp-gr  
2 mira female sp-
3 mike male en-
4 shel female sp-gr

等...

这里 en,sp,gr 是英语、西类牙语、德语我正在尝试获取计数的语言只说 en,sp(英语和西类牙语)的用户的数据库包含 300 多个用户,我更困惑如何获得只说 ensp 的用户数 表的语言字段包含字符串

 en-sp-gr 

我怎么能省略 -gr 和连字符 (-) 形成字符串,这仅适用于一行我必须对每一行执行此操作,然后计算那些只有说 en 和 sp 的用户。我不是 sql 专家 :(

最佳答案

这就是您不应在一个字段中存储多个值的原因。它们应该存储在规范化表中。

但是您可以通过将 - 替换为 , 并使用 FIND_IN_SET() 来完成此操作.这是必要的,因为 FIND_IN_SET() 需要一个逗号分隔的值列表。不过,这只能通过少数几种语言进行合理管理,因为您需要将所有排列编码到查询中。出于这个原因(以及其他原因,例如索引),强烈建议将其重构为一个相关表,将用户与其口语联系起来。

SELECT COUNT(*) FROM users 
WHERE
FIND_IN_SET('en', REPLACE(language,'-',',')) > 0
AND FIND_IN_SET('sp', REPLACE(language,'-',',')) > 0
AND FIND_IN_SET('gr', REPLACE(language,'-',',')) = 0

关于php - mysql的简单数据库查询,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9999236/

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