php - 使用 find_in_set 从 1 行中选择包含值的列

标签 php mysql sql find-in-set

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

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

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

谢谢。

最佳答案

您不能按照您建议的形式执行此操作。

在单个查询中显示包含 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 中,并且您在列中存储重复值。您可能需要查找第一个范式,看看情况是否确实如此,以及是否应该重新设计数据库以避免此问题和其他问题。

关于php - 使用 find_in_set 从 1 行中选择包含值的列,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20660337/

相关文章:

php - mysql查询按两列排序,每列都有权重

mySQL,sql 文件 netbeans

python - ndb.gql 与 ndb.query - Google App Engine

c# - 为什么在 linq-to-sql select 中比较 UTF16 字符串时会得到错误的结果?

php - 我应该用 is_resource 还是 mysqli_ping 检查 MySQL 连接?

javascript - 根据从选择菜单中选择的数量输出 Div 数

javascript - Highchart 与 html 网站中 SQL 数据的范围选择器

mysql - 查询以显示除初始记录以外的记录

PHP PDO 检查返回是否为 null

PHP/MYSQL - 付费成员(member)过期解决方案