MySQL上是否有任何方法可以在单个语句t中更新和选择更新的行?

MySQL上是否有任何方法可以在单个语句t中更新和选择更新的行?,mysql,select,join,Mysql,Select,Join,我可以加入SELECT和UPDATE语句吗?如果是,我怎么做 我有一张名为news的桌子 我在我的网站上显示新闻。如果有人读了新闻,我会在点击中添加1。我通过两个查询来实现这一点: mysql_query("SELECT * FROM news WHERE id=2 LIMIT 1"); mysql_query("UPDATE news SET hit=hit+1 WHERE id=2"); 但我想加入他们 id | title | content |hit ---

我可以加入SELECT和UPDATE语句吗?如果是,我怎么做

我有一张名为news的桌子

我在我的网站上显示新闻。如果有人读了新闻,我会在点击中添加1。我通过两个查询来实现这一点:

mysql_query("SELECT * FROM news WHERE id=2 LIMIT 1");
mysql_query("UPDATE news SET hit=hit+1 WHERE id=2");
但我想加入他们

id | title     | content           |hit
---+-----------+-------------------+---
1  | sdfsdfdsf | dfsdffdsfds836173 |5
2  | sfsdfds   | sdfsdsdfdsfdsfsd4 |9
3  | ssdfsdfds | sdfdsfs           |3

更新:OP希望更新并选择一条sql语句中更新的行。

任何数字字段都将通过此tinyint、int、float等进行更新

mysql_query("UPDATE news SET hit=hit+1 WHERE id=2 ");

希望这会有所帮助。

最好的方法是编写触发器,它将增加选定新闻的命中率
当从id=2的新闻中选择*LIMIT 1 Fire trigger UPDATE新闻集hit=hit+1,其中id=2时,编写一个存储过程:

delimiter //;
DROP PROCEDURE IF EXISTS ReadNews//;
CREATE PROCEDURE ReadNews(IN newsId INT)
BEGIN
    SELECT * FROM news WHERE id=newsId LIMIT 1;
    UPDATE news SET hit=hit+1 WHERE id=newsId;
END
用法:

CALL ReadNews(2)
更新

顺便说一下,大多数mysql客户机在一条语句中支持多个操作。 这种方法的一个常见用法是伪C代码

var result = DB.Execute("INSERT INTO table (id, name) VALUES (1, 'test'); SELECT LAST_INSERT_ID()");
它将执行插入并返回新创建记录的id

你可能做得到

var result = mysql_query("UPDATE news SET hit=hit+1 WHERE id=2; SELECT * FROM news WHERE id = 2");

您可以在存储过程中执行此操作。我不太明白您要执行的操作。你想用另一个表中的数据更新一个表中的值吗?你能给我们提供一个例子,说明你真正想要什么,以便我们可以帮助你。。。在编辑问题以澄清问题时,请确保包含完整、简洁的内容。对于SQL问题,这意味着表模式创建表语句、示例数据插入语句、尽可能多的查询以及示例数据的预期结果。在Postgres中,这将是一个简单的更新。。。返回*但我认为MySQL没有任何功能可以与之相比。