2011-11-23 3 views
5

SELECT 및 UPDATE 문에 연결할 수 있습니까? 그렇다면 어떻게 할 수 있습니까?MySQL이 단일 문장에서 업데이트 된 행을 업데이트하고 선택하는 방법이 있습니까?

이름이 뉴스 인 테이블이 있습니다.

나는 내 웹 사이트에 뉴스를 보여줍니다. 누군가가 뉴스를 읽으면 나는 to hit을 추가합니다. 나는 2 개의 질문으로 그것을한다 :

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 

업데이트 : 영업 업데이트하고 하나의 SQL 문에서 업데이트 된 행을 선택하려고합니다.

+1

을 할 수있는 당신은 내가 매우 당신이 뭘하려는 건지 이해가 안 돼요 저장 프로 시저 – Headshota

+1

에서 할 수 있습니다. 한 테이블의 값을 다른 테이블의 데이터로 업데이트 하시겠습니까? – Wiseguy

+2

질문을 편집 할 때 완전하고 간결한 [sample code] (http://sscce.org/)를 포함시켜야합니다. –

답변

1

쓰기 히트 뉴스 FROM 저장 프로 시저 :

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# 코드) 인 삽입을 수행하고 새로 생성 된 레코드의 ID를 반환합니다

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

.

당신은 아마도

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

모든 숫자 필드는이 작업을 수행합니다 (tinyint, int, float 등).

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

희망이 도움이 될 것입니다.

0

가장 좋은 방법은 선택 뉴스 에 수를 명중 증가합니다 트리거를 작성하는 경우 SELECT * ID = 2 LIMIT 1 화재 트리거 UPDATE 뉴스 SET는 = 히트 + 1 WHERE ID = 2

관련 문제