のid
に対応するコードI
を選択しようとしていますが、id
の場合はI
が唯一の対応値である必要があります。正しいid
は、5
(3
および8
はI
と一緒に他のcode
の値を持ちます)。 Oracle SQLの使用。必要条件が
id code
4 | G
4 | O
5 | I
3 | G
3 | I
8 | G
8 | I
8 | O
9 | G
のid
に対応するコードI
を選択しようとしていますが、id
の場合はI
が唯一の対応値である必要があります。正しいid
は、5
(3
および8
はI
と一緒に他のcode
の値を持ちます)。 Oracle SQLの使用。必要条件が
id code
4 | G
4 | O
5 | I
3 | G
3 | I
8 | G
8 | I
8 | O
9 | G
のためのいくつかの調整が必要になる場合があります。
select id
from t
group by id
having min(code) = 'I' and max(code) = 'I';
code
はNULL
することができた場合、あなたはそれを取るために別の条件を必要とします考慮する。
''I''ではなく' 5' – MatBailie
@MatBailieです。 。 。ありがとうございました。 –
大規模なデータセットに対するこの回答と私の答えのパフォーマンスがどのようなものかを見ることは興味深いでしょう。 –
このソリューションは、IDに一致するがコードが異なる場所にテーブルを左結合し、結合が失敗したレコードを見つけることによって機能します。 この最もSQL文では動作しますが、それはあなたが集計でこれを行うことができ、あなたの味
SELECT DISTINCT T0.* FROM [Table] AS T0
LEFT JOIN [Table] AS T1 ON T0.ID = T1.ID AND T0.Code <> T1.Code
WHERE T1.ID IS NULL AND T0.ID = 'I'
@GordonLinoffアプローチが最も速い可能性が高いですが、データに応じてさまざまなパフォーマンスプロファイルを持つ代替方法があります。あなたのテーブルには、この第二の選択肢は、あなたのテーブルが2つのインデックスを持っていることを前提としてい(id, code)
SELECT
primary.id
FROM
primary -- the table with a unique list of your IDs
WHERE
'I' = ALL (SELECT code FROM yourtable WHERE yourtable.id = primary.id)
にインデックスを持っている - 別のテーブルが
ユニークid
値のすべてに存在する -
:
この最初のオプションがあることを前提としてい:
- ('I'
コードを持っているのIDを見つけるための)(code, id)
- (id, code)
(見つけるためにこれらのIDは、任意の他のコードを持っている場合)
(そして@ZacFaragher答えと本質的に同じです。)
SELECT
code_i.id
FROM
your_table code_i
WHERE
code_i.code = 'I'
AND NOT EXISTS (SELECT *
FROM yourtable
WHERE yourtable.id = code_i.id
AND yourtable.code <> 'I'
)
異なるSQLエンジンが対処としてそれはさまざまなバリエーションを試し、多くの場合、価値があります相関サブクエリなどでより良い/悪い。
http://meta.stackoverflow.com/questions/285551/why-may-i-not-upload-images-of-code-on-so - 質問/質問285557と受け入れられた答え –
私の悪い、私はそれを持っていたメッセージボックスでどのように達成できるかを理解していませんでした。どこからでもコピーした場合(Excel、SQL Developer)、1行になります。改行を使用して入力しようとすると、改行はスキップされた行と一緒になり、より大きなスペースを取るようになります。将来もやり直します。ありがとう! – Eug
質問を編集するときに小さな "ヘルプ"ボタンをクリックすると、ここに書いてあります:http://stackoverflow.com/help/formattingテキストを書式設定する必要があるすべてのオプションを説明します –