SQL Query选择每个产品的最后一个条目和最后一个条目

时间:2014-04-04 21:27:54

标签: mysql sql join

下午好,

我正在尝试构建一个简单的库存系统,我希望我能够查询能够为每个产品(组件;参考)选择最后一个条目,并且也为每个产品选择最后一个条目(用于比较)。

这是我到目前为止:enter image description here

到目前为止,我的查询是:

SELECT u1.*
FROM $usertable u1
JOIN ( 
SELECT component, ref, MAX(date) date
FROM $usertable
GROUP BY component, ref 
) u2
USING(component, ref, date) ORDER BY component ASC, ref ASC

你能帮我解决一下这个问题吗?

2 个答案:

答案 0 :(得分:1)

您可以使用where子句

中的子查询来执行此操作
SELECT u1.*
FROM $usertable u1
WHERE (
        SELECT  COUNT(*) 
        FROM $usertable u2
        WHERE u2.component= u1.component
         AND u2.ref= u1.ref
         AND  u2.date>= u1.date
        ) <= 2
ORDER BY component ASC, ref ASC

答案 1 :(得分:0)

它应该工作。 http://www.sqlfiddle.com/#!2/288980/1

您可以尝试指定Join条件。

SELECT u1.*
FROM $usertable u1
JOIN ( 
    SELECT component, ref, MAX(date) date
    FROM $usertable
    GROUP BY component, ref 
      ) u2
  on u2.component = u1.component
  and u2.ref = u1.ref
  and u2.date = u1.date
ORDER BY component ASC, ref ASC

http://www.sqlfiddle.com/#!2/288980/1