【问题标题】:mysql select query within a array数组中的mysql选择查询
【发布时间】:2026-01-12 02:45:02
【问题描述】:

大家好,我有这种情况

tabperfil
ta

bperfil.Cidade_Id -> values = 12,34,645,21

然后我有一个$id = 12

所以我试着做这个查询

select * from tabperfil limit 0,5

但有条件获取Cidade_Id 的值并检查$id

如果是相反的情况我知道

select * from tabperfil WHERE Cidade_Id IN ($id)

那么如何做这样的事情

select * from tabperfil WHERE ($id) in Cidade_Id

【问题讨论】:

  • 如果您不能使用正确的语法,我们为什么要回答您的问题?
  • 看看 mysql 正则表达式...您将寻找 id 匹配字符串直到第一个逗号,紧跟逗号并以逗号结尾的场景,或者在哪里它跟随一个逗号并结束该行。
  • 没有人是完美的我的朋友,我不是英语专家,但我尝试......如果你可以使用,恭喜。我在学习
  • @blake305 这里有很多非英语母语的人。在回答问题之前要求正确的语法会消除很多可以提供的帮助。
  • @blake305 - 您的编辑包含一些大写字母和一些缺失的代码格式。我几乎不会说它“不可读”。正如 OP 在他的评论中所说,至少他在学习。如果我们继续这样下去,这些 cmets 很可能会被删除,所以我们就这样吧。

标签: php mysql arrays


【解决方案1】:

WHERE FIND_IN_SET($id, Cidade_Id) > 0

但是您应该真正规范化您的数据库。在 1 列中使用逗号分隔值是自找麻烦。

【讨论】:

  • 我真的认为每个从事数据库工作的人,或者至少是数据库应用程序的编程人员,都应该知道如何规范化数据库,并且不仅会知道,而且会做到。
  • 好的,我这样做了 - 也许不是马上,但可以工作 citys => (1,3,5,7) $id = 1 $sql "SELECT * FROM TABLE WHERE (citys LIKE '$id ,%' or citys LIKE '%,$id,%' OR citys LIKE '%,$id')";谢谢
  • 不要那样做。如果可能,更改您的数据库布局,以便不再有包含逗号分隔值的列。