mysql - 如何在 SQL 中执行条件插入

标签 mysql sql

我想知道如何在我的数据库中插入一些东西只有当它符合特定条件时。我不想在其中插入任何未经授权的值。

事实上,我想做这样的事情:(假设我只想插入来自特定类型客户的新订单)

    INSERT INTO orders
    (columns names)
    VALUES (values)
    WHERE orders.client_id IN (SELECT id FROM clients WHERE condition...)

(我知道这是不可能的,那是为了举例。)

我试过这个:

    INSERT INTO orders
    (columns names)
    VALUES (values);
    DELETE orders
    WHERE orders.client_id NOT IN (SELECT id FROM clients WHERE condition...)
    ORDER BY id DESC LIMIT 1

它似乎可以解决问题。但我不敢相信这是一个好的解决方案。

所以我的问题是:有没有办法在只有一个请求中正确地做到这一点?

(我发现很多关于主题的帖子或多或少与这个主题相似,但其中大多数的答案都带有 INSERT INTO ... SELECT ... 语句,我无法理解并且似乎 不适用于我的情况。)

最佳答案

您可以使用模拟子查询中的 SELECT 来欺骗它,这将允许您使用 where 子句。

     INSERT INTO orders
     (client_id, ...)
     SELECT client_id, ...
     FROM (SELECT 'your_value' AS client_id, ...) foo
     WHERE client_id IN (SELECT id FROM clients WHERE condition...);

关于mysql - 如何在 SQL 中执行条件插入,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/55752822/

相关文章:

php - 对预订系统中可用单位的逻辑进行排序

mysql - 建立父子关系时更新不起作用

php - 查询失败:错误:日期类型的输入语法无效:“”第 5 行:合并 (''::date ,'01-01-1990'::date 之间的 att_date)

sql - 如何添加SQL Server 2008管理员

php - 按多列对 sql 结果排序时出现问题

c# - 根据用户名计算日期之间所花费的时间

c# - C# 新手 - 尝试编写代码来执行简单的功能

mysql - 多次查询同一个表但在不同的列中mysql

mysql - 我无法在表中创建外键。我应该怎么办?

php - 3个日期范围之间的Mysql查询