我正试图弄清楚如何使用表B中的排除列表从表A中的select语句中排除项目.问题是我根据字段的前缀排除.
所以一个字段值可能是"FORD Muffler"并将其排除在基本查询之外:
SELECT FieldName
FROM TableName
WHERE UPPER(ColumnName) NOT LIKE 'FORD%'
Run Code Online (Sandbox Code Playgroud)
但是要使用值列表从不同的表格中排除我会使用子查询,如:
SELECT FieldName
FROM TableName
WHERE UPPER(ColumnName) NOT IN (Select FieldName2 FROM TableName2)
Run Code Online (Sandbox Code Playgroud)
问题是它只排除完全匹配而不是LIKE或通配符(%).
我怎样才能完成这项任务?重新设计表不是一个选项,因为它是一个正在使用的现有表.
编辑:对不起,我正在使用SQL Server(2005).
我想这会做到:
SELECT FieldName
FROM TableName
LEFT JOIN TableName2 ON UPPER(ColumnName) LIKE TableName2.FieldName2 + '%'
WHERE TableName2.FieldName2 IS NULL
Run Code Online (Sandbox Code Playgroud)
Dunno这将是多么有效,但它应该工作:
SELECT FieldName
FROM TableName t1
WHERE NOT EXISTS (
SELECT *
FROM TableName2 t2
WHERE t1.FieldName LIKE t2.FieldName2 + '%'
)
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
24919 次 |
| 最近记录: |