2011-11-23 3 views
5

Tôi có thể tham gia câu lệnh SELECT và UPDATE không? Nếu có, làm thế nào tôi có thể làm điều đó?Có cách nào để MySQL cập nhật và chọn các hàng được cập nhật trong một câu lệnh t không?

Tôi có bảng có tên là tin tức.

Tôi hiển thị tin tức trên trang web của mình. Nếu ai đó đọc tin tức tôi thêm đến nhấn. Tôi làm điều đó với 2 truy vấn:

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

Nhưng tôi muốn tham gia cùng họ.

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

Cập nhật: OP muốn cập nhật và chọn các hàng cập nhật trong vòng tuyên bố một sql.

+1

bạn có thể làm điều đó trong một thủ tục lưu trữ – Headshota

+1

Tôi hoàn toàn không hiểu những gì bạn đang cố gắng làm. Bạn có muốn CẬP NHẬT các giá trị trong một bảng với dữ liệu từ một bảng khác không? – Wiseguy

+2

Bạn có thể cung cấp cho chúng tôi một ví dụ về những gì bạn thực sự muốn sothat chúng tôi có thể giúp bạn –

Trả lời

1

Viết một thủ tục lưu trữ:

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 

Cách sử dụng:

CALL ReadNews(2) 

cập nhật

Bằng cách này, hầu hết các máy khách mysql hỗ trợ nhiều hành động trong một câu lệnh duy nhất. Một sử dụng chung cho điều này là (Pseude C# Mã)

var result = DB.Execute("INSERT INTO table (id, name) VALUES (1, 'test'); SELECT LAST_INSERT_ID()"); 

mà sẽ thực hiện một Chèn và Return id của bản ghi mới được tạo ra.

Bạn có thể có thể làm

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

Bất kỳ trường số nào sẽ thực hiện điều này bằng cách này (tinyint, int, float, v.v ...).

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

Hy vọng điều này sẽ hữu ích.

0

Cách tốt nhất là viết kích hoạt sẽ tăng đạt đếm trên tin tức chọn Khi SELECT * FROM tin WHERE id = 2 LIMIT 1 cháy tức kích hoạt UPDATE SET nhấn = hit + 1 WHERE id = 2