SQL Запросить слишком много строк - PullRequest
0 голосов
/ 08 мая 2020

У меня есть две таблицы Таблица A и Таблица B

Таблица A = 75 строк

Столбец1, столбец 2

Таблица b = 1200 строк

Столбец 3, столбец 4

Я хочу, чтобы были возвращены все строки в таблице A, чтобы я получил ТОЛЬКО 75 строк, и все это из таблицы A. В результирующем наборе должно быть 75 строк и 4 столбца

Результат:

Столбец 1, столбец 2, столбец 3, столбец 4

Но независимо от того, какое соединение я использую в SQL, я получаю более 75 строк, потому что таблица B имеет некоторые записи не совпадают, или у него есть несколько записей, связанных с таблицей A.

Как я могу вернуть ТОЛЬКО 75 строк из таблицы a, но не более 75?

SELECT dbo.[00-AA].ImageTag AS [Column 1], 
       dbo.[00-AA].DateIndexed AS [Column 2],       
       dbo.[00-AW].UserId AS [Column 3], 
       dbo.[00-AW].Status AS [Column 4]
FROM dbo.[00-AA] 
     LEFT OUTER JOIN dbo.[00-AW] ON dbo.[00-AA].ImageTag = dbo.[00-AW].Barcode

1 Ответ

0 голосов
/ 08 мая 2020

Проблема в том, что во второй таблице есть много записей для каждой записи в первой таблице, поэтому вам все равно нужно указать в запросе, какая из этих многих записей используется.

Этот образец возвращает первую случайная запись на [00-AW] с тем же штрих-кодом, что и ImageTag на [00-AA].

with CTE as (
  select Barcode, UserId, Status,
         row_number() over (partition by Barcode order by (select null)) as NUM
  from dbo.[00-AW]
)
SELECT dbo.[00-AA].ImageTag AS [Column 1], 
       dbo.[00-AA].DateIndexed AS [Column 2],       
       CTE.UserId AS [Column 3], 
       CTE.Status AS [Column 4]
FROM dbo.[00-AA] 
     LEFT OUTER JOIN CTE ON CTE.Barcode = dbo.[00-AA].ImageTag AND CTE.NUM = 1

Если вы хотите выбрать определенную запись на [00-AW] вместо первой случайной записи с этим штрих-кодом, вам просто нужно заменить (select null) полями, чтобы упорядочить этот выбор, поэтому первая запись будет той, которую он будет возвращать.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...