sql >> Databáze >  >> RDS >> Sqlserver

Dotaz, kde jsou dva sloupce ve výsledku vnořeného dotazu

Vlastně ne, neexistuje chytřejší způsob, jak to napsat (aniž byste dvakrát navštívili Y), protože X, se kterým se myTable.X a myTable.YY shodují, nemusí být ze stejného řádku.

Alternativně je forma dotazu EXISTS

select *
from myTable A
where exists (select * from Y where A.X = Y.X)
  and exists (select * from Y where A.XX = Y.X)

Pokud Y obsahuje X hodnot 1,2,3,4,5 a x.x = 2 a x.xx = 4 , oba existují (na různých záznamech v Y) a záznam z myTable by měl být zobrazen ve výstupu.

UPRAVIT:Tato předchozí odpověď uvedl, že You could rewrite this using _EXISTS_ clauses which will work faster than _IN_ . Jak Martin zdůraznil, není to pravda (rozhodně ne pro SQL Server 2005 a vyšší). Viz odkazy



  1. Počítání, kolik polí MySQL v řádku je vyplněno (nebo prázdných)

  2. MySQL INSERT INTO table SELECT FROM other_table, uvnitř PROCEDURE

  3. Měli byste provést více volání vložení nebo předat XML?

  4. Jak mohu vynechat sloupec z příkazu SELECT při jeho použití v klauzuli HAVING?