我有一个包含许多行和列的表。我想找到包含某个值的列,但在 ID=7 时只搜索 1 行。
以下表达式的正确书写方式是什么?
SELECT *
FROM mytable
WHERE FIND_IN_SET(400, list_column)
WHEN ID=7;
谢谢你。
我有一个包含许多行和列的表。我想找到包含某个值的列,但在 ID=7 时只搜索 1 行。
以下表达式的正确书写方式是什么?
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
并在第二个查询中使用这些列,例如上面的查询。
但是,我猜您想要这样做的原因是因为您的表不是第一范式,并且您在列中存储了重复值。您可能想查看第一个范式以查看是否确实如此,以及是否应该重新设计数据库以避免此问题和其他问题。