mysql - SELECT 语句的 WHERE 子句中列名的通配符?

标签 mysql sql database select wildcard

是否可以在 WHERE 子句中指定的列名中使用通配符?我想选择一些东西,但前提是一堆列匹配某个值(在本例中为 1)。例如:

SELECT COUNT(id) FROM records WHERE *_check = 1

我有一堆以 _check 作为后缀的列,使用与上述代码类似的东西(它不起作用)会非常好。

最佳答案

您可以查询 information_schema 以获取一个查询中的列

SELECT column_name FROM information_schema.columns
WHERE table_schema = 'foo'
 AND table_name = 'bar'
 AND column_name LIKE '%_check'

并根据结果构建查询(伪代码)

query = "SELECT COUNT(id) FROM records WHERE ";

foreach columName in columnNames
   query = query + " " + column_name + " = 1 OR "
next

query = TrimLastOr(query);

但我不建议这样做,因为 mysql information_schema 查询的性能很差,因为它们为每个查询从磁盘读取。

更好:使用返回的 View

SELECT id FROM records WHERE col1_check=1 or col2_check=2 ...

因此您可以在多个地方的逻辑中使用它,并且只有在添加另一个 _check 列时才需要更新 View 。

关于mysql - SELECT 语句的 WHERE 子句中列名的通配符?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10602888/

相关文章:

mysql - 请求多个复选框项目时如何设置 Rails 表单?

mysql - 从具有间接关系(从另一个表)的两个表中检索数据

mysql - South - 将 django 应用程序从 sqlite 迁移到 mysql

python - 使用 Python 写入以 MySQL 数据为源的 HTML 文件?

mysql - 更新 Varchar 字段,使字段内的数字保留 3 位小数

MySQL:在 FROM 子句限制中使用子查询查看

php - 带点的子串

sql - 在 Oracle 中使用 "Interval",其中 "Interval"是表中的值

sql - 如何在 postgres 中应用调度程序?

javascript - 从 sqlite 数据库加载数据并打印到 html 元素