【问题标题】:IF EXISTS Alternatives in SQL Server CE Or SQLiteIF EXISTS SQL Server CE 或 SQLite 中的替代方案
【发布时间】:2014-05-20 10:15:58
【问题描述】:

我有一些采用以下形式的旧版 SQL 语句:

IF EXISTS (SELECT 1 FROM ... WHERE ...)
AND NOT EXISTS (SELECT 1 FROM ... WHERE ...)
AND EXISTS (SELECT 1 FROM ... WHERE ...)
INSERT INTO ...

有没有办法更改此查询以使其在 SQL Server CE 和/或 SQLite 和普通 SQL Server 中工作?请注意,将过程 IF 逻辑移出 SQL 不是一种选择。

谢谢。

【问题讨论】:

  • 可以使用连接。但如果没有一个真实的例子,那就没什么好说的了。

标签: sql-server sqlite sql-server-ce


【解决方案1】:

您是否尝试将条件放入insert 本身?如果您使用的是价值声明,则需要使用insert . . . select

insert into table(col1, . . . coln)
    select val1, . . . valn
    where EXISTS (SELECT 1 FROM ... WHERE ...) AND
          NOT EXISTS (SELECT 1 FROM ... WHERE ...) AND
          EXISTS (SELECT 1 FROM ... WHERE ...);

我不能 100% 确定这是否适用于没有 from 子句的两个数据库。如果你没有,你可以这样做:

insert into table(col1, . . . coln)
    select *
    from (select val1, . . . valn) t
    where EXISTS (SELECT 1 FROM ... WHERE ...) AND
          NOT EXISTS (SELECT 1 FROM ... WHERE ...) AND
          EXISTS (SELECT 1 FROM ... WHERE ...);

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2013-10-22
    • 1970-01-01
    • 2016-04-19
    • 2022-01-07
    • 1970-01-01
    • 2011-12-29
    • 1970-01-01
    相关资源
    最近更新 更多