2中的区别在SQL中选择

M.V*_*.V. 17 mysql sql

我有一个数据表:

--------------------
ID |  user | Value
--------------------
1  |  1    | 1
--------------------
2  |  1    | 2
--------------------
3  |  2    | 3
--------------------
4  |  2    | 2
--------------------
5  |  3    | 4
--------------------
6  |  3    | 2
--------------------
Run Code Online (Sandbox Code Playgroud)

我想选择与用户1相比值不同的所有行,因此结果将是ID为3(值为3)和5(值为2)的行

我会做这样的事情(将其称为A)

SELECT * FROM table WHERE user = 1
Run Code Online (Sandbox Code Playgroud)

从用户1获取所有行.比我选择(将其称为B)

SELECT * FROM table WHERE user != 1
Run Code Online (Sandbox Code Playgroud)

并获取所有其他行.而且我会比较它们WHERE A.value != B.value.

我被困在如何将所有东西合并在一起......

请帮忙!

Mah*_*mal 33

试试这个:

SELECT * 
FROM table
WHERE value NOT IN ( SELECT value FROM table WHERE user = 1)
Run Code Online (Sandbox Code Playgroud)


one*_*hen 11

关系运算符确实是"差异",Oracle有关键字MINUS,标准SQL有关键字EXCEPTeg

SELECT value 
  FROM table 
EXCEPT
SELECT value 
  FROM table 
 WHERE user = 1;
Run Code Online (Sandbox Code Playgroud)

遗憾的是,MySQL没有任何这样的运算符,你必须使用其他SQL结构,例如NOT IN <table expression>:

SELECT value 
  FROM table
 WHERE value NOT IN ( SELECT value
                        FROM table
                       WHERE user = 1 );
Run Code Online (Sandbox Code Playgroud)