这是我第一次涉足SQL。
我有两张桌子Order& OrderItem的。 Order的OrderID为PK,在OrderItem中为FK。
现在OrderItem有' ProductName'这个专栏让我想到了这个问题。
我需要将所有产品(具体名称)放在两个日期之间。 Order表中包含' CreatedDate'列。
给定订单可以多次拥有相同的产品。 所以当你这样做时:
SELECT * FROM OrderItem
WHERE OrderID=40861
结果集可能会返回5行,所有这些行在" ProductName'中都有相同的值。列。
我写了这个查询:
SELECT Order.OrderID OrderID, OrderItem.ProductName ProductName From Order
INNER JOIN OrderItem ON Order.OrderID = OrderItem.OrderID
WHERE Order.CreatedDate between '2012-02-27' AND '2014-10-08'
结果有多行具有相同的' ProductName'值。
所以问题是我如何编写查询以返回结果集只有一行订单,尽管订单可能有多个相同产品的数量?
提前致谢。
答案 0 :(得分:0)
为了获得独特的结果,您有两种方式:
使用DISTINCT关键字:
SELECT DISTINCT Order.OrderID OrderID, OrderItem.ProductName ProductName From Order
INNER JOIN OrderItem ON Order.OrderID = OrderItem.OrderID
WHERE Order.CreatedDate between '2012-02-27' AND '2014-10-08'
小组结果:
SELECT Order.OrderID OrderID, OrderItem.ProductName ProductName From Order
INNER JOIN OrderItem ON Order.OrderID = OrderItem.OrderID
WHERE Order.CreatedDate between '2012-02-27' AND '2014-10-08'
Group By Order.OrderID, OrderItem.ProductName
`SELECT Order.OrderID OrderID, OrderItem.ProductName ProductName From Order
INNER JOIN OrderItem ON Order.OrderID = OrderItem.OrderID
WHERE Order.CreatedDate between '2012-02-27' AND '2014-10-08'`
UNION
`SELECT Order.OrderID OrderID, OrderItem.ProductName ProductName From Order
INNER JOIN OrderItem ON Order.OrderID = OrderItem.OrderID
WHERE Order.CreatedDate between '2012-02-27' AND '2014-10-08'`