更新并显示mysql查询

更新并显示mysql查询,mysql,database,select,Mysql,Database,Select,有没有办法将这两个查询合并为一个查询?我的意思是我可以运行一个更新查询,它会显示它更新的行。因为这里我使用了两次“whereid=1”过滤,所以我不想这样。另外,我认为,如果在select查询之前更改了someVal,我会对得到的内容感到不安(例如:update更新它,之后由于其他脚本,someVal变为0)。如果在实际代码中,条件部分(where等)太长,无法重复,只需将其放在两个查询中使用的变量中即可 除非遇到不同的问题,否则不需要将这两个问题结合起来。事实上,即使您所做的操作也不会显示更新

有没有办法将这两个查询合并为一个查询?我的意思是我可以运行一个更新查询,它会显示它更新的行。因为这里我使用了两次“whereid=1”过滤,所以我不想这样。另外,我认为,如果在select查询之前更改了someVal,我会对得到的内容感到不安(例如:update更新它,之后由于其他脚本,someVal变为0)。

如果在实际代码中,条件部分(where等)太长,无法重复,只需将其放在两个查询中使用的变量中即可


除非遇到不同的问题,否则不需要将这两个问题结合起来。

事实上,即使您所做的操作也不会显示更新的行,因为同时(更新后)某些进程可能会添加/更改行

这将显示所有记录,包括昨天更新的记录:)

如果我想确切地看到哪些行被更改,我会使用temp table。首先在临时表中选择要更新的所有行ID。然后根据临时表中的原始ID执行更新,然后返回临时表

UPDATE myTable SET niceColumn=1 WHERE someVal=1;

SELECT * FROM myTable WHERE someVal=1;

将这两个查询用所需的值包装在事务中,这样其他线程就不会影响更新和选择之间锁定的行。

您为什么不想这样做?显示它更新的行与选择具有某个值的行不同…我不想做两次相同的工作,假设我有一个大表。deniz,两次都不是同一份工作。你更新了-1个作业。你在寻找数据——另一份工作。如果您在someVal上有适当的索引,那么在db上应该非常容易。不要试图修复不存在的问题。2个查询很好哦,实际上我从未尝试过,但我完全认为你可以。
CREATE TEMPORARY TABLE to_be_updated
SELECT id
FROM myTable
WHERE someVal = 1;

UPDATE myTable
SET niceColumn = 1
WHERE id IN (SELECT * FROM to_be_updated);

SELECT *
FROM myTable
WHERE id IN (SELECT * FROM to_be_updated)