【问题标题】: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       |
 ---------------

【问题讨论】:

    标签: mysql sql database select


    【解决方案1】:

    find_in_set 函数正是您想要的:

    SELECT *
    FROM   mytable
    WHERE  FIND_IN_SET('45', page) > 0
    

    【讨论】:

      【解决方案2】:

      您不应将值存储在列表中。在这种情况下尤其如此:

      • 值应以正确的数据类型存储。您将数字存储为字符。
      • 应正确定义外键关系。
      • SQL 没有很好的字符串处理功能。
      • 生成的查询不能使用索引。
      • SQL 有一种很棒的列表数据类型,称为。在这种情况下,您需要一个联结表。

      有时,您会被其他人非常糟糕的设计决策所困扰。在这种情况下,您可以按照 Mureinik 的建议使用 find_in_set()

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 2012-07-02
        • 1970-01-01
        • 1970-01-01
        • 2016-10-20
        • 1970-01-01
        • 2018-08-15
        • 1970-01-01
        • 2013-08-31
        相关资源
        最近更新 更多