我有一个数据表:
--------------------
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有关键字EXCEPT
eg
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)
归档时间: |
|
查看次数: |
51576 次 |
最近记录: |