我可以加入SELECT和UPDATE语句吗?如果是的话,我该怎么做?
我有桌子,这个名字是新闻.
我在我的网站上显示新闻.如果有人看过新闻,我会加1来点击.我用2个查询做到了这一点:
mysql_query("SELECT * FROM news WHERE id=2 LIMIT 1");
mysql_query("UPDATE news SET hit=hit+1 WHERE id=2");
Run Code Online (Sandbox Code Playgroud)
但我想加入他们.
id | title | content |hit
---+-----------+-------------------+---
1 | sdfsdfdsf | dfsdffdsfds836173 |5
2 | sfsdfds | sdfsdsdfdsfdsfsd4 |9
3 | ssdfsdfds | sdfdsfs |3
Run Code Online (Sandbox Code Playgroud)
更新: OP想要更新并在一个sql语句中选择更新的行.
写一个存储过程:
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
Run Code Online (Sandbox Code Playgroud)
用法:
CALL ReadNews(2)
Run Code Online (Sandbox Code Playgroud)
更新
顺便说一句,大多数 mysql 客户端都支持在单个语句中执行多个操作。其常见用途是(伪 C# 代码)
var result = DB.Execute("INSERT INTO table (id, name) VALUES (1, 'test'); SELECT LAST_INSERT_ID()");
Run Code Online (Sandbox Code Playgroud)
它将执行插入并返回新创建的记录的 id。
你可能可以做
var result = mysql_query("UPDATE news SET hit=hit+1 WHERE id=2; SELECT * FROM news WHERE id = 2");
Run Code Online (Sandbox Code Playgroud)