繁体   English   中英

SELECT语句的WHERE子句中的列名是否通配符?

[英]Wildcard for a column name in the WHERE clause of a SELECT statement?

在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查询的性能很差,因为它们从磁盘读取每个查询的内容。

更好:使用返回的视图

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

因此,您可以在多个位置的逻辑中使用它,并且仅在添加另一个_check列时才需要更新视图。

没有。

如果要执行这样的操作,则需要等效的动态SQL。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM