2

これはデータベース内のデータです

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

....。

ロボットIDとsequence_noは、このテーブルの主キーです。

4

4 に答える 4

2

すべてのandWHEREが必要だと言うように句を変更することを除いて、クエリを使用します。値が1 つしかない場合は、次を使用します。robot_id=ABC1234EWHERE sequence_no does not equal = 1robot_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を参照してください

于 2012-09-13T14:01:42.537 に答える
0

楽しみのために、(ANSI標準)except句(minusOracleでは)を使用することもできます。これは、質問の仕方に「似ている」ものです。

select *
from the_table
except
select *
from the_table
where robot_id = 'ABC1234E' 
  and sequence_no = 1;

ただし、これはおそらく他のソリューションよりも遅くなりますが、完全を期すために含めると思いました。

(文字リテラルは一重引用符で囲む必要があり、数字はそうではないことに注意してください-質問で行ったのとは逆です)

于 2012-09-13T14:22:27.857 に答える
0
SELECT * FROM table WHERE robot_id=ABC1234E AND sequence_no<>'1'

より複雑なクエリがある場合は、RDBMS に応じて「マイナス」クエリを使用できます。ここのように: http://www.techonthenet.com/sql/minus.php

于 2012-09-13T14:02:21.610 に答える
0
SELECT *
FROM table
WHERE robot_id NOT LIKE 'ABC1234E' 
 OR sequence_no <> 1
于 2012-09-13T14:02:38.337 に答える