Mysql SQL中两个选择之间的差异
我有一个数据表:Mysql SQL中两个选择之间的差异,mysql,sql,Mysql,Sql,我有一个数据表: -------------------- ID | user | Value -------------------- 1 | 1 | 1 -------------------- 2 | 1 | 2 -------------------- 3 | 2 | 3 -------------------- 4 | 2 | 2 -------------------- 5 | 3 | 4 --------------------
--------------------
ID | user | Value
--------------------
1 | 1 | 1
--------------------
2 | 1 | 2
--------------------
3 | 2 | 3
--------------------
4 | 2 | 2
--------------------
5 | 3 | 4
--------------------
6 | 3 | 2
--------------------
我想选择值与用户1不同的所有行,因此结果将是IDS3值为3,5值为2的行
我会做这样的事情,我称之为
SELECT * FROM table WHERE user = 1
并从用户1获取所有行。我会把它叫做B
SELECT * FROM table WHERE user != 1
并获取所有其他行。然后我会比较它们,其中A.value!=B.价值
我被困在如何将所有东西合并在一起
请帮忙 试试这个:
SELECT *
FROM table
WHERE value NOT IN ( SELECT value FROM table WHERE user = 1)
从表中选择*,其中值不在“从表中选择值”,其中用户=1 关系运算符确实是“差”,Oracle有关键字减号,标准SQL有关键字,但例如 遗憾的是,MySQL没有任何这样的操作符,您必须使用其他SQL结构,例如不在:
OP在问题中提到了期望的结果。因此,结果将是IDS3值为3,5值为2的行。我认为OP写得不正确,5的值是2,应该是,5的值是4,因为第5行有值=4@MarkByers据我所知,他希望从表中获取所有数据,其中值不等于用户从OP获得的任何值:因此结果将是ids3值为3,5值为2的行
SELECT value
FROM table
EXCEPT
SELECT value
FROM table
WHERE user = 1;
SELECT value
FROM table
WHERE value NOT IN ( SELECT value
FROM table
WHERE user = 1 );