sql - PL SQL - 多列相等

标签 sql oracle select where-clause equality

我正在尝试评估多个列以节省一些按键次数(当然,在这一点上,搜索的时间和精力早已抵消了我将获得的任何“好处”),而不是多次不同的比较。

基本上,我有:

WHERE column1 = column2
AND column2 = column3

我想要:
WHERE column1 = column2 = column3

我发现了另一篇文章,这是切线相关的:
Oracle SQL Syntax - Check multiple columns for IS NOT NULL

最佳答案

用:

x=all(y,z)

代替
x=y and y=z

以上节省了 1 次击键(1/11 = 9% - 不多)。

如果列名更长,那么它可以节省更多:

这是 35 个字符长:
column1=column2 AND column2=column3

而这个只有 28
 column1=ALL(column2,column3)

但是对于这个(95 个字符):
column1=column2 AND column2=column3 AND column3=column4 
AND column4=column5 AND column5=column6

您将获得 43/95 = 近 50% 的节省
column1=all(column2,column3,column4,column5,column6)
ALL运算符是 ANSII SQL 的一部分,大多数数据库(Mysql、Postgresql、SQLServer 等)都支持它。
http://www.w3resource.com/sql/special-operators/sql_all.php

一个简单的测试用例,展示了它是如何工作的:
create table t( x int, y int, z int );

insert all 
into t values( 1,1,1)
into t values(1,2,2)
into t values(1,1,2)
into t values(1,2,1)
select 1 from dual;

select *
from t
where x = all(y,z);

        X          Y          Z
---------- ---------- ----------
        1          1          1 

关于sql - PL SQL - 多列相等,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/35660229/

相关文章:

sql - 在字符串上查询sql

c# - Windows Phone 8 上的 SQLite 性能非常糟糕

sql - 获取 'ORA-00907: missing right parenthesis' ,找不到错误

php - 优化的 mySQL 表索引结构,可更快地 SELECT 大范围日常数据

mysql - MySQL的SELECT WHERE如何进行整数比较?

php - 所有付款的 MYSQL 总值(value)字段

sql - SQLite CASE语句-如果不存在,请插入

oracle - Oracle 的 ROWNUM 是否会在提取所需的行之前构建整个表?

java - mvc View 对象最佳实践

java - Selenium 网络驱动程序。从 div 列表中选择元素