这是 Microsoft SQL Server 的 T-SQL 上的有效语法,但在 SQLite 中无效,是否有在 SQLite 中执行相同操作的替代语法?
DELETE FROM something
FROM something
INNER JOIN combinations ON something.field1=combinations.field1
AND something.field2=combinations.field2
--optionally more criteria and/or more joins
WHERE combinations.field3=1234
--or anything really, just to show some criteria could be applied here also
在一般情况下,将整个联接移动到一个子查询中,该子查询查找要删除的行的主键:
DELETE FROM something
WHERE id IN (SELECT something.id
FROM something
JOIN combinations ON something.field1=combinations.field1
AND something.field2=combinations.field2
WHERE combinations.something=1234)
如果您有复合主键,则可以使用rowid反而:
DELETE FROM something
WHERE rowid IN (SELECT something.rowid
FROM something
JOIN combinations ON something.field1=combinations.field1
AND something.field2=combinations.field2
WHERE combinations.something=1234)
如果您有复合主键并且将该表创建为没有ROID表,您必须将连接重写为相关子查询:
DELETE FROM something
WHERE EXISTS (SELECT 1
FROM combinations
WHERE field1 = something.field1
AND field2 = something.field2
AND field3 = 1234)
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)