mysql - 将选择和删除查询作为单个语句

标签 mysql sql select join sql-delete

第一个查询

    select id from posts where post_title='abc' || post_title='xyz' order by id desc limit 1;

假设返回值为 730 和 735。

下一个查询

    delete from posts where id in(730,735);

我希望将这两个查询合并到一个语句中。如何做呢。请帮忙

我已经尝试过下面这个。它不起作用。

delete from posts where id in
        (
            select id from posts where post_title='abc' order by id desc limit 1,
                            select id from posts where post_title='xyz' order by id desc limit 1
                        );

最佳答案

在我看来,在一个查询中执行delete-and-select时我们必须使用IF-EXISTS子句,因为如果select返回null,它会抛出异常,所以试试这个:

IF EXISTS (SELECT id FROM [Posts] WHERE post_title IN ('abc', 'xyz'))
BEGIN 
     DELETE FROM posts 
     WHERE id IN (SELECT id 
                  FROM [Posts]
                  WHERE post_title IN ('abc', 'xyz') 
                  ORDER BY post_title, id DESC
                 ) 
END

关于mysql - 将选择和删除查询作为单个语句,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20783264/

相关文章:

mysql - 90 球宾果游戏 - 获得中奖券的最短路径

python - 如何在我的Django文件中包含一个表单?

MySQL,获取真正的重复记录

mysql - 在 Telerik radrotator(legand) 中,日期绑定(bind)为 system.byte

PHP:如何从mysql检索数据并插入到特定用户

c# - 用于从不同表中检索的 SQL 语法?

mysql - SQL查询查找每个user_id的最大id

MySQL:为字段中的每个唯一值选择固定数量的记录

mysql - 在连接条件中添加通配符

select - sqlite3 在数据库中插入和读取BLOB数据