检查值是不是存在于数据库行之一中
Posted
技术标签:
【中文标题】检查值是不是存在于数据库行之一中【英文标题】:check if value is present in one of the database rows检查值是否存在于数据库行之一中 【发布时间】:2016-09-26 22:57:26 【问题描述】:我正在寻找一种方法来检查页面列的某一行中是否存在值。
例如是否应该检查值 '45' 是否存在?
Id | page |
---------------
1 | 23 |
---------------
2 | |
---------------
3 | 33,45,55 |
---------------
4 | 45 |
---------------
【问题讨论】:
【参考方案1】:find_in_set
函数正是您想要的:
SELECT *
FROM mytable
WHERE FIND_IN_SET('45', page) > 0
【讨论】:
【参考方案2】:您不应将值存储在列表中。在这种情况下尤其如此:
值应以正确的数据类型存储。您将数字存储为字符。 应正确定义外键关系。 SQL 没有很好的字符串处理功能。 生成的查询不能使用索引。 SQL 有一种很棒的列表数据类型,称为表。在这种情况下,您需要一个联结表。有时,您会被其他人非常糟糕的设计决策所困扰。在这种情况下,您可以按照 Mureinik 的建议使用 find_in_set()
。
【讨论】:
以上是关于检查值是不是存在于数据库行之一中的主要内容,如果未能解决你的问题,请参考以下文章
如何检查MySQL中是不是存在行? (即检查电子邮件是不是存在于 MySQL 中)