データベースの設計に問題があります。次の問題の解決策を見つけるためにテーブルを照会する必要があります。SQL Serverの2つのクエリの違いを取得する
私はこのようなテーブルを持っているとしましょう。
+------------+------------+--------------+-----------+
| id | SubCode | Type | NumId |
+----------------------------------------------------+
| 1 | SB1212 | TCH | 100000000 |
| 1 | SB1212 | APP | 100000000 |
| 1 | SB1212 | TCH | 100000001 |
| 1 | SB1212 | APP | 100000002 |
+----------------------------------------------------+
私はだけが(彼らは=「APP」とタイプに属するべきではありません)タイプ=「TCH」に属している人々のNumIdを見つける必要があります。
NumIdは複製可能であることに注意してください。
次のクエリを書きましたが、ロードに時間がかかりすぎています。これは簡単な問題のように見えますが、私は解決策が見えないほど長くこれを試しています。誰かが私が間違っているところを私に指摘できますか?
SELECT NumId
FROM TeacherSubject
WHERE SubCode = 'SB1212'
AND Type = 'TCH' OR Type = 'APP'
AND id NOT IN (SELECT NumId FROM TeacherSubject
WHERE SubCode = 'SB1212'
AND Type = 'APP')
ORDER BY NumId DESC
私は期待していた出力は、です。 はTCHとAPPタイプに属しているためです。
を使用すると 'TCH' – Petaflop