MySQL案例中的多个Insert语句

时间:2012-12-03 10:24:22

标签: mysql insert case

我正在尝试从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行

我在这里采取了错误的做法吗?这个错误来自哪里?

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, ... ]