php - 带有插入和更新的 MySQL 案例

标签 php mysql sql syntax innodb

我需要帮助编写条件查询以将数据从一个表复制到另一个表,一切都非常简单,直到我决定在我的应用程序中包含版本控制!

我看过一些示例,但它们主要面向创建 mysql 过程,这是我尝试过的:

        SELECT CASE 
            WHEN NOT EXISTS (
                SELECT `version`
                FROM `archive_courses`
                WHERE `original_course_id` = '$course_id'
                AND `version` = '$current_version'
            )
            THEN
                BEGIN
                    INSERT INTO `archive_course_users`      <------ syntax error
                    (`course_id`, `user_id`, `course_qty`)
                    SELECT @new_course_id, '$user_id', `course_qty`
                    FROM `current_course_users`
                    WHERE `course_id` = '$course_id'
                    AND `user_id` = '$user_id'
                END
            ELSE
                BEGIN
                    UPDATE `archive_course_users`
                    SET `course_qty` = (SELECT `course_qty` FROM `current_course_users` WHERE `user_id` = '$user_id')
                    WHERE `original_course_id` = '$course_id'
                    AND `user_id` = '$user_id'
                END
            END
        END

看起来情况是可行的/OK/但是当它到达我的INSERT 查询时抛出一个语法错误。 我应该怎么做?

最佳答案

它不应该那样工作。将您的查询更改为

               INSERT INTO `archive_course_users`     
                (`course_id`, `user_id`, `course_qty`)
                SELECT @new_course_id, '$user_id', `course_qty`
                FROM `current_course_users`
                WHERE `course_id` = '$course_id'
                AND `user_id` = '$user_id'
                AND NOT EXISTS (
            SELECT 1
            FROM `archive_courses`
            WHERE `original_course_id` = '$course_id'
            AND `version` = '$current_version');

关于php - 带有插入和更新的 MySQL 案例,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/34023397/

相关文章:

php - 如何从 PHP 使用 RabbitMQ 延迟消息队列?

php - 如何在 PHP 应用程序中验证 Google Cloud Speech-To-Text 客户端?

php - 为什么我看不到 php 的 mysql 数据的完整数组?

PHP/SQL 更新 - 仅在值已更改时更新

sql - 添加 where 子句会使查询速度变慢

SQL 选择 id 在哪里 `column`

php - mysql Show tables 以 TABLES "number of rows"作为第一个值返回所有 +1

php - If 语句在新标签页中打开链接

php - 将我的 Laravel 连接到外部数据库

mysql - 在 mysql 连接中使用 WHERE