Mysql 我可以在一次查询中更新/选择表吗?
我需要在查看页面时选择数据并更新“视图”列是否有方法在一个查询中执行此操作,还是我必须使用来区分查询?您必须在一个事务中的两个语句中执行此操作Mysql 我可以在一次查询中更新/选择表吗?,mysql,sql-update,Mysql,Sql Update,我需要在查看页面时选择数据并更新“视图”列是否有方法在一个查询中执行此操作,还是我必须使用来区分查询?您必须在一个事务中的两个语句中执行此操作 Begin Tran Update Pages Set Views = Views + 1 Where ID = @ID Select Columns From Pages Where ID = @ID Commit Tran 如果您不想/不需要使用事务,可以创建一个存储过程,该存储过程首先更新视图计数,然后选择值并将其返回给用户。PostgreS
Begin Tran
Update Pages Set Views = Views + 1 Where ID = @ID
Select Columns From Pages Where ID = @ID
Commit Tran
如果您不想/不需要使用事务,可以创建一个存储过程,该存储过程首先更新视图计数,然后选择值并将其返回给用户。PostgreSQL语句具有RETURNING子句,该子句将返回与SELECT语句类似的结果集:
UPDATE mytable
SET views = 5
WHERE id = 16
RETURNING id, views, othercolumn;
我很确定这不是标准的。我不知道是否有其他数据库实现了它
编辑:我刚刚注意到你的问题有“MySQL”标签。也许你应该在问题本身中提到它。不过,这是一个很好的通用数据库问题-我想看看如何在其他数据库中执行此操作。如果您列出了正在使用的RDBMS,这会有所帮助 SQL Server具有输出语句 范例
USE AdventureWorks;
GO
DECLARE @MyTestVar table (
OldScrapReasonID int NOT NULL,
NewScrapReasonID int NOT NULL,
WorkOrderID int NOT NULL,
ProductID int NOT NULL,
ProductName nvarchar(50)NOT NULL);
UPDATE Production.WorkOrder
SET ScrapReasonID = 4
OUTPUT DELETED.ScrapReasonID,
INSERTED.ScrapReasonID,
INSERTED.WorkOrderID,
INSERTED.ProductID,
p.Name
INTO @MyTestVar
FROM Production.WorkOrder AS wo
INNER JOIN Production.Product AS p
ON wo.ProductID = p.ProductID
AND wo.ScrapReasonID= 16
AND p.ProductID = 733;
SELECT OldScrapReasonID, NewScrapReasonID, WorkOrderID,
ProductID, ProductName
FROM @MyTestVar;
GO
我在Java中使用了这个技巧,SQL Server还允许您在一个PreparedStatement中发送两个命令
update tablex set y=z where a=b \r\n select a,b,y,z from tablex
这需要在读提交事务中才能像您认为的那样工作