Mysql查询问题,当列不为null时插入行

时间:2014-06-25 23:32:01

标签: mysql sql-server select insert case

这是我的疑问:

SELECT vehicle,
CASE 
WHEN vehicle IS NOT NULL
THEN (INSERT INTO tbl_vehicle_on_user (vehicle, userid) values
(SELECT `vehicle` FROM `tbl_missions` WHERE `id` = 4 ), (SELECT `id` FROM `tbl_users`     WHERE `id` = 12))
FROM tbl_missions WHERE id = 4;

当id 4上的车辆不为空时,我需要向tbl_vehicle_on_user插入一行。 当我执行此查询时,我从mysql workbench收到此错误,

01:24:49选择车辆,当车辆不是空时(输入到tbl_vehicle_on_user(车辆,用户ID))值(SELECT vehicle FROM tbl_missions WHERE id = 4) ,(SELECT id FROM tbl_users WHERE id = 12))FROM tbl_missions WHERE id = 4错误代码:1064。您的SQL语法有错误;检查与MySQL服务器版本对应的手册,以便在'INTO tbl_vehicle_on_user(vehicle,userid)值附近使用正确的语法(SELECT vehicle FROM`tbl_mi'在第4行0.000秒

当我将鼠标悬停在'INTO'上时,我得到一条红线,它表示'语法错误,意外INTO,期待('。

我不知道这意味着我试图在网上搜索但是如果你知道如何解决这个问题就找不到任何东西如果你回答我的问题我会很感激:)

谢谢!

1 个答案:

答案 0 :(得分:1)

如果您已经知道userid应为12,那么只需使用12而不是SELECT id FROM tbl_users WHERE id = 12。这是一个有效的insert-select声明。

INSERT INTO tbl_vehicle_on_user (vehicle, userid)
SELECT `vehicle`, 12 userid 
FROM `tbl_missions` 
WHERE `id` = 4 and vehicle is not null;