删除行然后执行选择查询

时间:2016-09-30 06:43:11

标签: php sql sqlite

我必须基于某些条件delete行,然后我使用Select查询选择剩余行,是否可以在SQL中使用?

这两个操作都应该单个查询。

请问我,这种情境的原始和最佳方法是什么。

2 个答案:

答案 0 :(得分:1)

  

注意:can't do it all in one query,但如果您使用的是事务存储引擎(如InnoDB),则可以在一个TRANSACTION中完成所有操作。这可能是您想要的,但仅使用您在问题中提供的信息很难说清楚。

使用TRANSACTION:

START TRANSACTION;

INSERT STMT;
DELETE STMT;
UPDATE STMT;

COMMIT;

如果有IN运算符和WHERE,您可以根据子查询基于以下查询进行删除和选择。

IN条件

MySQL IN条件用于帮助减少在SELECT,INSERT,UPDATE或DELETE语句中使用多个OR条件的需要。

注意:

  1. MySQL IN条件将返回表达式为value1,value2 ...或value_n的记录。
  2. MySQL IN条件也称为MySQL IN运算符。
  3. DELETE from rooms WHERE initiating_user_id IN (SELECT user_id FROM users WHERE user_connected = 0)and target_user_id IN (SELECT user_id FROM users WHERE user_connected = 0)

    使用过程:

      

    您也可以为“执行此操作”创建该过程。这将减少您在代码中使用的查询数量。

    CREATE PROCEDURE select_update_delete(a)
    BEGIN
    
    UPDATE table_one SET table_one.avalue=1 WHERE table_one.another=a;
    
    DELETE FROM table_two WHERE table_two.avalue=a;
    
    SELECT * 
    FROM table_one
    WHERE table_one.another=a;
    
    END;
    

    希望我的解释能够清楚地理解你的疑惑。

    谢谢&快乐编码:)

答案 1 :(得分:0)

  

这两个操作都应该单个查询。

不应该。

  

请问我,这种情境的原始和最佳方法是什么。

只需运行两个单独的查询。不管你不这样做的原因是错误的。