【问题标题】:INSERT INTO...SELECT...WHERE with null if condition fails如果条件失败,则 INSERT INTO...SELECT...WHERE 为 null
【发布时间】:2012-02-09 18:27:54
【问题描述】:

我正在尝试执行以下操作:

INSERT INTO `File` (`Name`, `Owner`) 
SELECT @File, `Users`.Id
FROM `Users`
WHERE `Users`.`Name` = @UserName

但是,如果用户表中没有匹配项,我希望它仍然插入文件但具有空值。所以就像在用户表上执行左连接,用 ON 替换 WHERE。但是我不能只使用 LEFT JOIN,因为我没有表格可以加入它。任何人都可以帮助我如何在不将其分成两个单独的查询的情况下做到这一点吗?

这是专门针对 SQLite 的。

【问题讨论】:

    标签: sqlite insert-select


    【解决方案1】:

    也许这样的事情可以解决问题:

    INSERT INTO `File` (`Name`, `Owner`) 
    SELECT @File, `Users`.Id
    FROM (SELECT @UserName as Name) notable
    left join `Users` on `Users`.`Name` = notable.Name
    

    【讨论】:

    • 不是我想要的那样,但它确实有效。我希望有一种方法可以在没有子查询的情况下做到这一点,但如果它有效,它就可以工作。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2015-11-05
    • 1970-01-01
    • 2016-01-19
    • 2016-06-05
    • 2012-12-20
    相关资源
    最近更新 更多