INSERT INTO ... SELECT ... WHERE со значением null, если условие не выполнено - PullRequest
0 голосов
/ 09 февраля 2012

Я пытаюсь сделать что-то вроде следующего:

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

Однако, если в таблице Users нет совпадений, я бы хотел, чтобы он все равно вставлял файл, но с нулевым значением.Так же, как выполнение ЛЕВОГО СОЕДИНЕНИЯ для таблицы Users с ON, заменяющим WHERE.Но я не могу просто использовать LEFT JOIN, потому что у меня нет таблицы, к которой можно присоединиться.Кто-нибудь может мне помочь, как я мог бы сделать это, не разбивая его на два отдельных запроса?

Это специально для SQLite.

1 Ответ

0 голосов
/ 09 февраля 2012

Может быть, что-то подобное могло бы сработать:

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