删除行,然后执行Select查询


Deleting row and then performing Select query

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

这两个操作应该在一个查询中完成。

请告诉我,对于这种类型的上下文,最原始和最好的方法是什么?

注意:can't do it all in one query,但你可以做到这一切在一个TRANSACTION如果你使用事务性存储引擎(如InnoDB)。这可能是你想要的,但很难通过你在问题中提供的信息来判断。

Working on with TRANSACTION:

START TRANSACTION;
INSERT STMT;
DELETE STMT;
UPDATE STMT;
COMMIT;

IN操作符和WHERE操作符的帮助下,可以根据下面的子查询进行删除和选择。

在条件

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

注意:

  1. MySQL IN条件将返回表达式为value1, value2…,或value_n.
  2. MySQL IN条件也称为MySQL IN操作符。

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)

处理过程:

您也可以为Doing this创建过程。这将减少您在代码中使用的查询数量。

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;

希望我的解释能让你明白你的疑惑。

谢谢,Happy Coding:)

这两个操作应该在一个查询中完成。

不应该。

请告诉我,对于这种类型的上下文,最原始和最好的方法是什么?

只运行两个单独的查询。无论你不这样做的理由是什么,都是错误的。