我有一个查询,我需要检查20个不同的列为0值.
而不是做:
哪里
预订<> 0
或者ALLO<> 0
要么 …
有更快的方法吗?
就像是:
哪里
(BOOK,ALLO,…)<> 0
虽然它不能在其他任何地方运行(
MySQL,
sql-Server,Postgres),并且它可能不是
sql标准,但它适用于Oracle:
WHERE 0 <> ANY (BOOK,...)
在SQL-Fiddle测试
还有另一种标准方法,适用于MysqL和Postgres,但不适用于Oracle:
WHERE (0,...) <> (BOOK,...)
另一种在Postgres和sql-Server 2012中工作的标准方法(使用表值构造函数):
WHERE 0 <> ANY (VALUES (BOOK),(ALLO),...)