5

テーブル B の除外リストを使用して、テーブル A の select ステートメントからアイテムを除外する方法を見つけようとしています。キャッチは、フィールドのプレフィックスに基づいて除外していることです。

したがって、フィールド値はおそらく「FORD Muffler」であり、それを基本的なクエリから除外するには、次のようにします。

SELECT FieldName 
FROM TableName 
WHERE UPPER(ColumnName) NOT LIKE 'FORD%'

しかし、値のリストを使用して別のテーブルから除外するには、次のようなサブクエリを使用します。

SELECT FieldName 
FROM TableName 
WHERE UPPER(ColumnName) NOT IN (Select FieldName2 FROM TableName2)

問題は、完全一致のみを除外し、LIKE またはワイルドカード (%) を除外しないことです。

どうすればこのタスクを達成できますか? 使用中の既存のテーブルであるため、テーブルの再設計はオプションではありません。

編集:申し訳ありませんが、SQL Server (2005) を使用しています。

4

3 に答える 3

8

これでうまくいくと思います:

SELECT FieldName
FROM TableName
LEFT JOIN TableName2 ON UPPER(ColumnName) LIKE TableName2.FieldName2 + '%'
WHERE TableName2.FieldName2 IS NULL
于 2009-01-09T22:40:11.527 に答える
5

これがどれほど効率的かはわかりませんが、うまくいくはずです:

SELECT FieldName 
FROM TableName t1
WHERE NOT EXISTS (
    SELECT *
    FROM TableName2 t2
    WHERE t1.FieldName LIKE t2.FieldName2 + '%'
)
于 2009-01-09T22:41:52.337 に答える
2
SELECT * FROM table_A 
LEFT OUTER JOIN table_B 
    ON (locate(table_b.column, UPPER(table_a.column)) == 1)
WHERE table_b.column IS NULL
于 2009-01-09T22:44:17.853 に答える