我可以加入SELECT和UPDATE语句吗?如果是,我该怎么做?
我的表名是 新闻 。
我在我的网站上显示新闻。如果有人阅读新闻,我会将 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语句中选择更新的行。
答案 0 :(得分:1)
编写存储过程:
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客户端在一个语句中支持多个动作。 常见的用途是(Pseude C#Code)
var result = DB.Execute("INSERT INTO table (id, name) VALUES (1, 'test'); SELECT LAST_INSERT_ID()");
将执行Insert并返回新创建记录的id。
你可以做到
var result = mysql_query("UPDATE news SET hit=hit+1 WHERE id=2; SELECT * FROM news WHERE id = 2");
答案 1 :(得分:0)
任何数字字段都会由此完成(tinyint,int,float等)。
mysql_query("UPDATE news SET hit=hit+1 WHERE id=2 ");
希望这会有所帮助。
答案 2 :(得分:0)
最好的方法是编写触发器,增加选择新闻的命中数 当SELECT * FROM news WHERE id = 2 LIMIT 1 Fire trigger UPDATE news SET hit = hit + 1 WHERE id = 2