我正在尝试从MySQL表中选择一个值(id)并在更新语句中使用它 - 所有这些都在MySQL查询中。 select由2部分组成:如果id存在,则返回;如果没有,则完成2次插入并返回id。
我有以下查询:
SELECT
(CASE a.id WHEN '' THEN (
DELIMITER //
INSERT INTO xxxx (item_id, date_created, date_modified) VALUES (3313, NOW(), NOW())//
INSERT INTO yyyy (item_id, locale_id, value, date_created, date_modified) VALUES(LAST_INSERT_ID(), 2, TRIM(SUBSTRING_INDEX('some text: 250 x 46 x 584', ':', 1)), NOW(), NOW())//
SELECT c.id FROM xxxx c JOIN yyyy d WHERE c.item_id=3313 AND d.value='some text' LIMIT 1
) ELSE a.id END
) AS trans_ref_id
FROM xxxx a JOIN yyyy b ON a.id = b.item_id
WHERE b.value='some text'
当我运行它时,我收到以下错误:
SQL错误(1064):您的SQL语法中有错误;检查与您的MySQL服务器版本对应的手册,以便在''附近使用正确的语法 ELSE a.id. 结束 ) 作为trans_ref_id 从xxxx'第2行
我在这里采取了错误的做法吗?这个错误来自哪里?
答案 0 :(得分:0)
您无法使用SQL执行此操作。您需要使用cursors。手册有一个例子供您查看。可能最好把它放在存储过程中。
答案 1 :(得分:0)
您的广告素材尝试不符合SELECT+INSERT syntax,即:
INSERT [LOW_PRIORITY | HIGH_PRIORITY] [IGNORE]
[INTO] tbl_name [(col_name,...)]
SELECT ...
[ ON DUPLICATE KEY UPDATE col_name=expr, ... ]