2017-02-25 16 views
0

を除外する:私はid 4を必要とする。このことからは私がテーブルを持っている別の重複行

 
id field_id todelete 
1 x001  0 
2 x001  1 
3 x001  0 
4 x002  1 
5 x003  0 
6 x003  1 
7 x004  0 
8 x005  0 

、それはtodelete = 1field_idで独自のを持っています。 私の現在のソリューション:

array = SELECT field_id WHERE todelete = 1 

及びその配列から

SELECT field_id WHERE field_id = array[x] HAVING COUNT(field_id) = 1 

は間違って解決しているようです。私はこれをSQLでしか持てませんか?ありがとう

+0

http://stackoverflow.com/q/8829975/6495084 – GedAWizardofEarthSea

+0

いいえ、私はそれはのように見えると思う select field_id where todelete = 1 h aving count(field_id)= 1 –

+0

どのDBMSを使用していますか? Postgres?オラクル? DB2?ファイアバード? –

答えて

1

あなたは良い道を歩いていました。そこ確かに他のソリューションであるが、それらはあなたのように働く2であるがしたい:

SQL Fiddle

のMySQL 5.6スキーマのセットアップ

CREATE TABLE Table1 
    (`id` int, `field_id` varchar(4), `todelete` int) 
; 

INSERT INTO Table1 
    (`id`, `field_id`, `todelete`) 
VALUES 
    (1, 'x001', 0), 
    (2, 'x001', 1), 
    (3, 'x001', 0), 
    (4, 'x002', 1), 
    (5, 'x003', 0), 
    (6, 'x003', 1), 
    (7, 'x004', 0), 
    (8, 'x005', 0) 
; 

クエリ1

SELECT id 
FROM Table1 
WHERE field_id in 
    (SELECT field_id 
    FROM Table1 
    WHERE todelete = 1) 
GROUP BY field_id 
HAVING count(*)=1 

Results:2

| id | 
|----| 
| 4 | 

問合せ:

SELECT id 
FROM Table1 
WHERE todelete = 1 
AND field_id in 
    (SELECT field_id 
    FROM Table1 
    GROUP BY field_id 
    HAVING count(*)=1) 

Results:私はこれはあなたを助けるかもしれないと考えている

| id | 
|----| 
| 4 | 
+0

2番目の例はまさに私が必要とするものです。ありがとうございました –

関連する問題