你可以在查询中使用多列吗?

fro*_*die 7 mysql sql syntax

我最近看到有人发布这个作为SO查询问题答案的一部分:

SELECT DISTINCT a, b, c 
FROM t1 
WHERE (a,b,c) NOT IN 
   ( SELECT DISTINCT a,b,c FROM t2 )
Run Code Online (Sandbox Code Playgroud)

我有点困惑,因为我一直认为你不能使用多列"NOT IN"(" where(a,b,c) "等).这是正确的SQL语法吗?那MySQL怎么样?

Vin*_*vic 5

这是一个 SQL 扩展。Oracle、PostgreSQL 和 MySQL 都有它。SQL Server 2005 没有它。我不确定其他人的情况。


Cor*_*rey 5

谷歌搜索表明它可以在某些数据库上运行,但不能在其他数据库上运行。您可以改用以下方法:

SELECT DISTINCT a, b, c 
FROM t1 
WHERE NOT EXISTS
   (SELECT 1 FROM t2 
    WHERE t1.a = t2.a AND t1.b = t2.b AND t1.c = t2.c)
Run Code Online (Sandbox Code Playgroud)