【问题标题】:Select column containing value from 1 row using find_in_set使用 find_in_set 从 1 行中选择包含值的列
【发布时间】:2014-01-06 18:15:27
【问题描述】:

我有一个包含许多行和列的表格。我想找到包含某个值的列,但在 ID=7 时只搜索 1 行。

下列表达式的正确写法是什么?

SELECT *   
FROM mytable
WHERE FIND_IN_SET(400, list_column)
WHEN ID=7;

谢谢。

【问题讨论】:

    标签: php mysql sql find-in-set


    【解决方案1】:

    你不能按照你建议的形式这样做。

    在单个查询中显示包含400 的列的最佳方法是使用CASE 或类似的方法,每列测试一个案例。例如:

    SELECT CASE
       WHEN col1=400 THEN 'col1'
       WHEN col2=400 THEN 'col2'
       WHEN col3=400 THEN 'col3'
       ...
       ELSE 'Not found'
    END CASE
    FROM mytable
    WHERE id=7
    

    可以通过动态 SQL(或 PHP 等效项)使用 INFORMATION_SCHEMA 查询从表中读取所有列并在第二个查询(例如上述查询)中使用这些列。

    但是,我猜您想要这样做的原因是因为您的表不在first normal form 中,并且您在列中存储了重复值。您可能想查看第一个范式以查看是否确实如此,以及是否应该重新设计数据库以避免此问题和其他问题。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2021-09-15
      • 1970-01-01
      • 1970-01-01
      • 2013-02-06
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多