0

次のようなUserテーブルがある場合:

UserId    Name
------    ----
1         Jim
2         Mark

そしてこのような注文テーブル:

OrderId    UserId
-------    ------
1          1
2          1
3          1
4          2

ジムの注文を1つだけ受け取るにはどうすればよいですか?どちらでも構いません。1つだけ欲しいです。

私はこれを持っています:

参加は問題ではありません。明らかに3つあるため、結果を1つに制限するだけです。

SELECT * FROM User u
LEFT OUTER JOIN Order o on u.UserId = o.UserId

前もって感謝します。

4

4 に答える 4

1

これにより、最初に一致した行が選択されます。

SELECT TOP 1 * FROM User u 
LEFT OUTER JOIN Order o ON u.UserID = o.UserID

探しているユーザーが事前にわかっている場合は、それをWHERE句に追加できます。

WHERE u.UserID = @userID

また、最初の注文または最新の注文を確実に受け取る必要がある場合は、次を使用できます。

ORDER BY o.OrderID ASC/DESC
于 2012-08-21T15:32:39.227 に答える
0
Select u.userid, name, min (orderID) 
FROM User u 
LEFT JOIN Order o on u.UserId = o.UserId     
group by u.userid, name

ジムのためだけにフィルタリングするには

Select min (orderID) 
FROM User u 
LEFT JOIN Order o on u.UserId = o.UserId     
where name='Jim'
于 2012-08-21T15:10:52.257 に答える
0

次のクエリは、ユーザーごとに1つの注文(各ユーザーの最小注文番号)を提供します

select name, order_id 
from users u,
     orders o
where u.user_id = o.user_id 
and o.order_id = (select min(order_id) from orders c where c.user_id=o.user_id)
于 2012-08-21T15:14:01.467 に答える
0
select u.userid, 
       u.name,
       o.orderid
from users u
join (select orderid, 
             userid,
             row_number() over (partition by userid order by orderid) as rn
      from orders) o
  on o.userid = u.userid and o.rn = 1;

order byウィンドウ定義の一部を微調整することで、どの注文が行われるかを制御できます。

于 2012-08-21T15:14:55.563 に答える