Мне нужно выбрать данные при просмотре страницы и обновить столбец «Просмотры», есть ли способ сделать это в одном запросе или мне нужно использовать для разных запросов?Могу ли я обновить/выбрать из таблицы в одном запросе?
ответ
Если вы не хотите/нужно использовать транзакцию, вы можете создать хранимую процедуру, которая первая обновляет счетчик просмотров, а затем выбирает значения и вернуть их пользователю. UPDATE заявления
Вы должны сделать это в двух операторов в одной транзакции
Begin Tran
Update Pages Set Views = Views + 1 Where ID = @ID
Select Columns From Pages Where ID = @ID
Commit Tran
PostgreSQL имеет возвращающий пункт, который будет возвращать результирующий набор как ЗЕЬЕСТ:
UPDATE mytable
SET views = 5
WHERE id = 16
RETURNING id, views, othercolumn;
Я уверен, что это не стандарт, хотя. Я не знаю, реализуют ли какие-либо другие базы данных.
Редактировать: Я только заметил, что ваш вопрос имеет тег «MySQL». Может быть, вы должны упомянуть об этом в самом вопросе. Это хороший общий вопрос базы данных, хотя - я хотел бы посмотреть, как это сделать в других базах данных.
Это поможет, если вы перечислили РСУБД вы используете SQL Server имеет оператор OUTPUT
Пример
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
Это должно быть в прочитанной транзакции, чтобы работать, как вы думаете.
- 1. Могу ли я получить элемент предка в одном запросе?
- 2. Могу ли я получить 2 разных результата из 1 таблицы в одном запросе?
- 3. Могу ли я использовать непохожие и «в» в одном запросе?
- 4. Могу ли я иметь несколько ключей разделов в одном запросе?
- 5. Могу ли я объединить эти 2 запроса в одном запросе
- 6. Могу ли я выбрать больше счетчиков в одном запросе?
- 7. как я могу сделать это в одном запросе
- 8. Отображение полей таблицы в одном запросе
- 9. joing в multipale таблицы в одном запросе
- 10. Mysql Как я могу получить 2 набора результатов в одном запросе из одной таблицы?
- 11. Как я могу запустить это, кроме подзапроса в одном запросе?
- 12. соединяющие три таблицы в одном запросе
- 13. 3 таблицы в одном запросе mysql?
- 14. Как запросить две таблицы в одном запросе
- 15. PDO Подготовить 2 таблицы в одном запросе
- 16. Удаление повторяющихся строк из таблицы в DB2 в одном запросе
- 17. MySQL 3 таблицы в одном запросе?
- 18. Могу ли я использовать критерии из любой текущей формы в одном запросе в Access 2003
- 19. ORDER BY результате из двух таблицы в одном запросе
- 20. PHP: две таблицы в одном запросе
- 21. Как сравнить столбец из другой таблицы в одном запросе
- 22. Возможно ли это сделать в одном запросе?
- 23. суммировать разные значения из одной таблицы в одном запросе
- 24. Невозможно обновить две таблицы в одном запросе
- 25. Как запросить 3 таблицы в одном запросе?
- 26. Проверить две таблицы в одном запросе
- 27. Переименование смешанного регистра таблицы в одном запросе
- 28. MySQL Обновление всей таблицы в одном запросе
- 29. ¿Как я могу комбинировать утверждения в одном запросе в Ораторе?
- 30. Как я могу сравнить результат в одном запросе или двух?