varias tablas inner hacer ejemplos datos consultas consultar con complejas como mysql sql rdbms

mysql - tablas - inner join en sql



Cree una tabla de SQL en línea sobre la marcha(para una unión izquierda excluida) (4)

Puede crear una "tabla en línea" con una subconsulta UNION :

( SELECT 10 AS id UNION ALL SELECT 11 UNION ALL SELECT 12 UNION ALL SELECT 13 UNION ALL SELECT 14 -- etc. ) AS inline_table

Supongamos lo siguiente:

Tabla a

id | value ---------- 1 | red 2 | orange 5 | yellow 10 | green 11 | blue 12 | indigo 20 | violet

Tengo una lista de identificadores (10, 11, 12, 13, 14) que se pueden usar para buscar identificadores en esta tabla. Esta lista de identificadores se genera en mi interfaz.

Usando puramente SQL, necesito seleccionar los ID de esta lista (10, 11, 12, 13, 14) que no tienen entradas en la Tabla A (unirse en la columna ''id''). El resultado debe ser el conjunto de resultados de ID 13 y 14.

¿Cómo puedo lograr esto usando solo SQL? (Además, me gustaría evitar el uso de un procedimiento almacenado si es posible)

El único enfoque que se me ocurre es algo que crearía una tabla de SQL en línea sobre la marcha para mantener temporalmente mi lista de ID. Sin embargo, no tengo idea de cómo hacer esto. es posible? ¿Hay alguna manera mejor?

¡Gracias! :)


Puede hacer esto desde SQL Server 2008 en adelante usando un constructor de valores de tabla.

SELECT * FROM ( VALUES(1, ''red''), (2, ''orange''), (5, ''yellow''), (10, ''green''), (11, ''blue''), (12, ''indigo''), (20, ''violet'')) AS Colors(Id, Value)

Más información aquí: Table Value Constructor


CREATE TEMPORARY TABLE ids (id INT NOT NULL PRIMARY KEY); INSERT INTO ids VALUES (10), (11), (12), (13), (14); SELECT * FROM ids WHERE id NOT IN ( SELECT id FROM a );


create table B (id int) insert into B values (10),(11),(12),(13),(14) select * from B left join A on A.id=B.id where A.id is null drop table B

http://sqlfiddle.com/#!6/6666c1/30