2011-11-23 6 views
5

¿Puedo unirme a la instrucción SELECT y UPDATE? Si es así, ¿cómo puedo hacer eso?¿Hay alguna manera en MySQL de actualizar y seleccionar las filas actualizadas en una sola declaración t?

Tengo la tabla que nombre es noticias.

Muestro noticias en mi sitio web. Si alguien lee noticias agrego a marque. Lo hago con 2 consultas:

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

Pero quiero unirme a ellas.

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

Actualización: el PO quiere actualizar y seleccionar las filas actualizadas dentro de una declaración SQL.

+1

puede hacerlo en un procedimiento almacenado – Headshota

+1

yo no entiendo muy bien lo que estás tratando de hacer. ¿Desea ACTUALIZAR valores en una tabla con datos de otra tabla? – Wiseguy

+2

¿Puede darnos un ejemplo de lo que realmente quiere para que podamos ayudarle –

Respuesta

1

Escribir una procedimiento almacenado:

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 

Uso:

CALL ReadNews(2) 

actualización

Por cierto, la mayoría de los clientes de MySQL soportan múltiples acciones en una sola declaración. Un uso común para esto es (Pseude código de C#)

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

que llevará a cabo una inserción y devolver el identificador del registro recién creado.

lo que pueda hacer

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

Cualquier campo numérico lo hará por esto (tinyint, int, float, etc.).

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

Espero que esto ayude.

0

mejor manera es escribir disparador que se incrementará de aciertos en selecto de noticias Cuando SELECT * FROM noticias donde id = 2 LIMIT 1 Fuego noticias de actualización se activa SET golpeó = hit + 1 donde id = 2

Cuestiones relacionadas