簡體   English   中英

SQL子查詢-為一行中返回的每個“ ID”執行一條選擇語句

[英]SQL Subquery - executing a select statement for every “ID” returned in a row

假設我有兩個表,一個person表和一個orders表。 person表尤其包括person personID字段和name字段。 orders表包含一個orderID字段等。 我想返回有關一個或多個人的信息,但除此之外,我想使用personID查詢其他信息,並在每一行中返回。 例如:

personID    name    +    orderID
  120       John           5000

我現在的查詢如下:

SELECT p.personID, p.name
FROM person p
WHERE p.name = "John"

我想返回匹配該名稱查詢的人員列表,但對於每個結果,還請使用personID查找介於兩個日期之間的特定訂單(一個訂單),選中“活動”標志,等等,或者如果該訂單不存在,則為orderID返回null。

假設指定的在給定的日期和標志之間只有1個訂單

SELECT p.personID, p.name, (Select OrderId From Orders o Where o.PersonId = p.personID and o.Date Between Value1 And Value2 And o.FlagColumn = 'Active') As OrderId
FROM Person p
WHERE p.name = "John"

您也可以為此JOIN

SELECT p.personID, p.name, o.OrderId
FROM Person p
JOIN Orders o On p.PersonId = o.PersonId
WHERE p.name = "John" And
      o.Date Between Value1 And Value2 And 
      o.FlagColumn = 'Active'

嘗試這個

Select p.* 
From Person p
JOIN Orders o 
     ON p.PersonID = o.PersonID AND 
     (o.OrderDate BETWEEN '2013-07-01' AND '2013-07-30') AND
     (o.IsActive = 1)
WHERE p.Name = 'John'

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM