使用左连接的SQL查询从特定日期开始按降序排列行

时间:2014-12-25 07:23:47

标签: mysql sql sql-server sqlite

我有两张桌子:

产品

  

productID,productName,productPrice

已购买

  

productID,creationDate

查询 - 返回unique productsJune 2nd返回后most expensive product <}返回的first列表{/ 1}}

为此我写了下面的查询:

SELECT Product.productID,
       Product.productName,
       Product.productPrice,
       Purchased.creationDate
FROM   Product
       LEFT JOIN Purchased
              ON Product.productID = Purchased.productID
ORDER BY Product.productPrice DESC
WHERE  Purchased.creationDate > 02 / 06 / 2014 

请您确认以上书面查询是否正确或我是否有任何错误。

3 个答案:

答案 0 :(得分:1)

试试这个:

SELECT p.productID, p.productName, p.productPrice, pp.creationDate
FROM Product p
LEFT JOIN Purchased pp ON p.productID = pp.productID
WHERE pp.creationDate > '2014-06-02'
ORDER BY p.productPrice DESC;

答案 1 :(得分:1)

使用alises

缩短时间
SELECT pr.productID,
       pr.productName,
       pr.productPrice,
       pu.creationDate
FROM   Product pr
       LEFT JOIN Purchased pu
              ON pr.productID = pu.productID
WHERE  pu.creationDate > 02 / 06 / 2014
ORDER  BY pr.productPrice DESC 

答案 2 :(得分:0)

如果我不需要那些从未购买过的产品(意思是在Pruchased表中没有条目),我会做一个内连接而不是左连接。 Joins Explained

并且顺序应该是最后一件事。

SELECT Product.productID, Product.productName, Product.productPrice, Purchased.creationDate
FROM Product
INNER JOIN Purchased
ON Product.productID=Purchased.productID
WHERE  Purchased.creationDate > '2014-06-02'
ORDER BY Product.productPrice DESC