我有 100 行需要删除,基于PersonId
和CarModel
.有些PersonId
可能有多个CarModel
,所以如果我使用
DELETE FROM myTable
WHERE PersonId IN (
101,
102,
103,
104
)
AND CarModel IN (
'Honda Accord',
'Ford Explorer',
'Other car model',
'Last car model'
)
然后会有删除 101 的误报,我不想要的"福特探索者"。 只有101,"本田雅阁"和102,"福特探索者"
我可以将其格式化为
DELETE FROM myTable
WHERE
(PersonId = 101 AND CarModel = 'Honda) Accord'
OR (PersonId = 102 AND CarModel = 'Ford Explorer')
OR (PersonId = 103 AND CarModel = 'model 1')
OR ( PersonId = 104 AND CarModel = 'model 2')
但这有点丑陋。有更干净的语法吗?我找不到大列表的多列 where 子句
某些版本的 SQL(MySQL、Oracle(支持IN
表达式中的多个列:
DELETE FROM myTable
WHERE (PersonId, CarModel) IN ((101, 'Honda Accord'), (102, 'Ford Explorer'), (103, 'model 1'), ...)