2012-02-09 5 views
0

Я пытаюсь сделать что-то вроде следующего:INSERT INTO ... SELECT ... WHERE с нулем, если условие не

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

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

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

ответ

0

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

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

Не совсем, как мне хотелось бы, но это работает. Я хочу, чтобы был способ сделать это без подзапроса, но если он работает, он работает. –

Смежные вопросы