стол присоединиться где - PullRequest
       19

стол присоединиться где

0 голосов
/ 26 ноября 2009

Table1 t10 (id)

id
---
1
2

таблица t11 (a1, a2, a3)

a1  a2  a3
----------
1   10   a
1   10   b
1   11   b
1   12   c
2   20   d
2   21   e

выберите * из t10 a, t11 b, где a.id = b.a1 как отобразить

id  a1  a2  a3
--------------
1   1   10  a
1   1   10  b //(not display this row)
1   1   11  b //(not display this row)
1   1   12  c //(not display this row) 
2   2   20  d
2   2   21  e //(not display this row)

просто получите случайный ряд t11

maybe display this
id  a1  a2 
---------- 
1   1   11  b
1   1   10  a //(not display this row)
1   1   10  b //(not display this row)
1   1   12  c //(not display this row) 
2   2   20 
2   2   21  //(not display this row) 

Ответы [ 3 ]

3 голосов
/ 26 ноября 2009
select a1 as id, a1, min(a2) as a2
from t11
group by a1

даст вам:

id  a1  a2
----------
1   1   10
2   2   20
0 голосов
/ 26 ноября 2009

Похоже, он хочет что-то вроде FIRST / LAST из ms access.

Это можно сделать (очень близко) в Sql Server, используя

DECLARE @Table TABLE(
        id INT,
        a1 INT,
        a2 INT
)

INSERT INTO @Table (id,a1,a2) SELECT 1, 1, 11
INSERT INTO @Table (id,a1,a2) SELECT 1, 1, 10
INSERT INTO @Table (id,a1,a2) SELECT 1, 1, 12
INSERT INTO @Table (id,a1,a2) SELECT 2, 2, 20
INSERT INTO @Table (id,a1,a2) SELECT 2, 2, 21

SELECT  *
FROM    @Table t
WHERE   a2 = (SELECT TOP 1 a2 FROM @Table WHERE id = t.id AND a1 = t.a1)
0 голосов
/ 26 ноября 2009

Это ответ:

SELECT *
  FROM t10 a, (
       SELECT * FROM (
           SELECT b.*, ROW_NUMBER() OVER(PARTITION BY a10 ORDER BY a10) as rn
           FROM t11 b
       ) WHERE rn =1) b
 WHERE a.id = b.a10(+)
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...