Как получить верхнюю 1 строку из второй таблицы при объединении двух таблиц: SQL Server 2014 - PullRequest
0 голосов
/ 08 декабря 2018

Я новичок в SQL Server 2014. Я пытаюсь получить данные из двух таблиц путем объединения.

Во второй таблице у меня несколько значений для одного и того же идентификатора заголовка.Я хочу взять значение строки TOP 1 из второй таблицы:

enter image description here

enter image description here

Я хочу получить данные как в следующем формате

enter image description here

Я хочу получить TOP 1 изображение для всех имен в первой таблице.

Может кто-нибудь помочь мне решить эту проблему?

Ответы [ 3 ]

0 голосов
/ 08 декабря 2018

Это то, что вы ищете

WITH T1 AS
(
  SELECT 1 ID,
         'Anto' Name,
         'Manager' Position
  UNION
  SELECT 2, 
         'Nick',
         'CEO'
)
, T2 AS
(
  SELECT 1 ID,
         1 H_ID,
         'URL1' Images
  UNION
  SELECT 2,
         1,
         'URL2'
  UNION
  SELECT 3,
         1,
         'URL3'
)

SELECT *
FROM T1 CROSS JOIN (SELECT TOP 1 Images FROM T2 ORDER BY ID) TT

Демо

ИЛИ

SELECT TOP 1
       T1.*,
       T2.Images
FROM T1 INNER JOIN T2
ON T1.ID = T2.H_ID
ORDER BY T2.ID;
0 голосов
/ 08 декабря 2018

Попробуйте это

SELECT *
FROM T1, T2
WHERE T1.ID = T2.H_ID
AND NOT EXISTS(
    SELECT * 
    FROM T2 as T2BIS -- just an alias table
    WHERE T2BIS.H_ID = T1.ID -- usual join
    AND T2.ID > T2BIS.ID --change operator to take the last instead of the first
)

Это универсальное решение, которое вы можете использовать во многих случаях, когда вы настраиваете подзапрос, где условия и предложение EXISTS / NOT EXISTS, просто кампарисон между двумя одинаковыми пробелами,Вы определяете условия.

  1. первое что-то ...
  2. последнее чего-то ...
  3. все выше чем ...
  4. и т.д ...
0 голосов
/ 08 декабря 2018

Вы можете использовать cross apply.Условия немного неясны, но идея такова:

select t1.*, t2.images
from table1 t1 cross apply
     (select top (1) t2.*
      from t2
      where t2.? = t1.id
     ) t2;

Я бы предположил, что коррелированное условие должно использовать либо t2.h_id, либо t2.id.

...