【问题标题】:write select query for the below requirement为以下要求编写选择查询
【发布时间】:2023-03-15 21:54:01
【问题描述】:

这是我的users 表:

http://ezinfotec.com/Capture.PNG

我需要选择除列中不包含 2 的所有行。如何使用 php 和 Mysql 编写查询。

我期望这个查询的结果是只返回最后一行。

谢谢。

【问题讨论】:

  • 什么。有。你。试过了。

标签: mysql sql select concat sql-like


【解决方案1】:

这应该适合你

SELECT *
FROM table
WHERE table.except NOT LIKE '%,2%'
OR table.except NOT LIKE '%2,%';

【讨论】:

    【解决方案2】:

    不要在表中存储逗号分隔的值,这是非常糟糕的做法,不过你可以使用FIND_IN_SET

    SELECT
      *
    FROM 
      users
    WHERE 
      NOT FIND_IN_SET('2', except)
    

    【讨论】:

    • 你能告诉我为什么我们不应该在表格中存储逗号分隔值吗?只想知道
    • 因为您需要额外的工作才能使它们具有可读性或可操作性。这就是 MySQL 是关系数据库的原因,您可以使用众所周知的关系,例如多对多
    • this comprehensive SO post 关于在列中存储逗号分隔值。
    【解决方案3】:

    试试这个:

    SELECT *
    FROM users 
    WHERE CONCAT(',', except, ',') NOT LIKE '%,2,%'
    

    【讨论】:

      猜你喜欢
      • 2023-01-11
      • 2015-11-15
      • 1970-01-01
      • 1970-01-01
      • 2021-05-01
      • 2014-03-18
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多