我正在编写一个更新客户表中记录的脚本。
是否有一种优雅的方式来运行更新,只需打印已更新的内容,而不是运行具有相同SELECT
功能的其他WHERE CONDITION
。
我知道如何做的唯一方法是首先进行选择,然后更新选择中的每条记录,然后将其打印出来。
那是:
if(isset($dry_run)) {
SELECT a, b, c, d FROM customer
}
else {
UPDATE CUSTOMER set d='blah'
}
如果UPDATE
可以返回一个结果集,然后我可以打印出来显示所有更新记录的customer_id,firstname,lastname和email,而无需编写代码并且不会多次访问数据库。这样的事情存在吗?
- 编辑 -
由于共识是否,无法完成 - 有人可以解释为什么SQL无法将更新的行捆绑到一个对象中,然后可以迭代并打印出来吗?
答案 0 :(得分:1)
为什么需要更新?你应该可以选择这个。例如,假设您要更新customer_id为某个值的记录。您可以为具有该值的行运行select。
答案 1 :(得分:0)
您可以使用选择而不是更新
而不是做
UPDATE table set column1=value1, column2=value2 WHERE conditions
你可以做到
SELECT value1 as column1, value2 as column2 FROM table WHERE conditions
会给你相同的结果。
答案 2 :(得分:0)
反转代码。
if(!isset($dry_run)) {
UPDATE CUSTOMER set d='blah'
}
SELECT a, b, c, d FROM customer
并回答你的问题。更新和选择操作是不同的。无需阅读整个记录即可更新它们。
如果你想要,写一个执行update和select的MySQL程序。
如果你想知道为什么它在你有光标读写的其他语言中不能用,那么答案就是慢一些。
答案 3 :(得分:0)
如果您从客户端获取数据以进行更新,为什么在更新查询后需要再次获取数据。您已经在请求中获得了数据,并得到回应。