这是数据库中的数据
robot_id sequence_no x y
ABC1234E 1 8888 9999
ABC1234E 2 8888 9999
ABC1234E 3 8888 9999
ABC1234E 4 8888 9999
BBC1 1 8888 9999
BBC2 1 8888 9999
BBC2 2 8888 9999
BBC3 1 8888 9999
......
我希望排除此结果集:
SELECT * FROM table WHERE robot_id=ABC1234E AND sequence_no='1'
这是我应该得到的:
robot_id sequence_no x y
ABC1234E 2 8888 9999
ABC1234E 3 8888 9999
ABC1234E 4 8888 9999
BBC1 1 8888 9999
BBC2 1 8888 9999
BBC2 2 8888 9999
BBC3 1 8888 9999
......
robot id 和sequence_no是该表中的主键
最佳答案
您将使用您的查询,除非您只需更改 WHERE
子句来表示您想要所有 robot_id=ABC1234E
且 WHEREequence_no 不等于 = 1
.如果您只有一个 robot_id
值,您可以使用:
所以你的查询是:
SELECT *
FROM yourTable
WHERE robot_id='ABC1234E'
AND sequence_no !=1
或者
SELECT *
FROM yourTable
WHERE robot_id='ABC1234E'
AND sequence_no <> 1
参见SQL Fiddle with Demo
但是,如果您的数据包含您无法使用的其他 robot_id
值:
select *
from yourtable t1
where not exists (SELECT sequence_no
FROM yourTable t2
WHERE robot_id='ABC1234E'
and sequence_no = 1
and t1.robot_id = t2.robot_id
and t1.sequence_no = t2.sequence_no)
参见SQL Fiddle with Demo
关于mysql - 获取除 SQL 结果集之外的所有行,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12408013/