mysql - 获取除 SQL 结果集之外的所有行

标签 mysql sql

这是数据库中的数据

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=ABC1234EWHEREequence_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/

相关文章:

sql - 如何创建一个以多列为轴的 PostgreSQL 数据透视表?

c# - 检查 NULL 重复项的 SQL 不返回

mysql - SQL高级过滤

mysql - 尽管在 Mysql 中将 show_dB_priv 设置为 N,但仍显示数据库正在运行

mysql - laravel 播种返回 undefined index

mysql - Mysql 未初始化常量

SQL Sum 多行合二为一

php - Mysql BETWEEN 子句被忽略。没有语法错误

mysql - 如何从批量数据中的mysql列中删除所有非数字字符

sql - 在具有较少连接的关系中找到三个对象