检查值是不是存在于数据库行之一中

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 中)

检查数组中的所有值是不是都存在于数据库列中

打字稿:按值检查对象是不是存在于数组中

检查列中的值是不是存在于数据框行中的其他位置

如何检查MySQL中是不是存在一行? (即检查电子邮件是不是存在于 MySQL 中)

检查列 pyspark df 的值是不是存在于其他列 pyspark df