Mysql查询问题,列不为空插入行的情况
Posted
技术标签:
【中文标题】Mysql查询问题,列不为空插入行的情况【英文标题】:Mysql query issue, case when column is not null insert row 【发布时间】:2014-06-25 23:32:01 【问题描述】:这是我的查询:
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 工作台收到此错误,
01:24:49 选择车辆,当车辆不为空时,然后(插入到 tbl_vehicle_on_user(车辆,用户 ID)值(SELECT vehicle
FROM tbl_missions
WHERE id
= 4),(选择 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' at line 4 0.000 sec
当我将鼠标悬停在“INTO”下方时,会出现一条红线,上面写着“语法错误,意外 INTO,期待 ('。
我不知道这意味着什么
谢谢!!
【问题讨论】:
Select 语句是要查看的列的投影,与 CRUD 语句不兼容。这是一个正确解决您的问题的答案:***.com/questions/12587929/… 感谢您的回答,但这对我来说似乎太难了,您能为我做吗.. 我对 SQL 还不是很有经验.. 【参考方案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;
【讨论】:
我不知道它是否会是 12,这只是一个例子,我也不知道id
是否会是 4.. 抱歉,我之前没有提到。跨度>
tbl_missions 和 tbl_users 是什么关系?如果不是4
,你的意思是所有的id吗?
嗯,tbl_missions 有时确实有一个不是 NULL 的车辆列,如果这是真的,那么我需要来自 tbl_users 的 id 和来自 tbl_missions 的 id 并将它们放在一个表中 (tbl_vehicle_on_user)。 4和12是用户在php中生成的,所以4是登录用户的id,12是他选择的missionid。
@Anwar,你能发布所有 3 个表的架构以及它们是如何链接的吗?
抱歉,我现在没有访问权限,您能建议一些应该做的事情吗?以上是关于Mysql查询问题,列不为空插入行的情况的主要内容,如果未能解决你的问题,请参考以下文章
php mysql批量或批量更新多列和多行但如果列不为空则不更新