2011-04-15 31 views
9

Dos tablas.SQL Actualizar una tabla según las condiciones en otra tabla

Content (table), 
    topic_id (primary key), 
    data (text) 

Topics (table), 
    topic_id (primary key), 
    content_type (text) 

Ambas tablas tienen los mismos datos de clave principal (topic_id).

es necesario que actualice el campo de datos (tabla de contenido) con el texto "desactivado", pero sólo en el campo content_type (tabla Temas) = ​​el texto "RVF"

puedo: SELECT * from topics WHERE content_type = "rvf";

I puede: UPDATE content SET data = ("disabled");

Pero, ¿cómo puedo juntarlos?

Respuesta

19

Solución estándar ANSI SQL (debería funcionar en cualquier DBMS)

UPDATE content 
    SET data = 'disabled' 
WHERE topic_id IN (SELECT t.topic_id 
        FROM topics t 
        WHERE t.content_type = 'rvf') 
+0

Gracias, funcionó a la perfección. Esto estaba en SQlite, olvidé mencionar eso. –

6

Esto debería funcionar si está utilizando SQL Server

UPDATE content 
SET data = 'disabled' 
FROM content 
INNER JOIN topics 
on content.topic_id = topics.topic_id 
WHERE content_type = 'rvf' 

También puede actualizar el contenido con un valor de temas haciendo algo como esto:

UPDATE content 
SET content.data = topics.content_type 
FROM content 
INNER JOIN topics 
on content.topic_id = topics.topic_id 
WHERE content_type = 'rvf' 

No estoy seguro si se aplica en este caso, pero es bueno saber que puede ...

+0

No falta la condición para 'content_type = 'rvf'' –

+0

Sí, lo está, actualizado. gracias :) –

Cuestiones relacionadas