这是我创建ms访问查询的示例sql查询。我想在min(DATE)只获得一行。怎么当我运行我的查询我得到多行。任何点击?感谢
SELECT tblWarehouseItem.whiItemName,
tblWarehouseItem.whiQty,
tblWarehouseItem.whiPrice,
Min(tblWarehouseItem.whiDateIn) AS MinOfwhiDateIn,
tblWarehouseItem.whiExpiryDate,
tblWarehouseItem.whiwrhID
FROM tblWarehouseItem
GROUP BY tblWarehouseItem.whiDateIn,
tblWarehouseItem.whiItemName,
tblWarehouseItem.whiQty,
tblWarehouseItem.whiPrice,
tblWarehouseItem.whiExpiryDate,
tblWarehouseItem.whiwrhID;
如果我有我的sql代码,那就应该正常工作:
SELECT MIN(tblWarehouseItem.whiDateIn) FROM tblWarehouseItem;
答案 0 :(得分:3)
在第一个查询中,您按多个列进行分组。这意味着将为每个组计算最小值,这反过来意味着您可能有多个行。另一方面,第二个查询只会从所有行中获取指定列的最小值,因此结果集中只有一行。
下面显示了一个简单的例子来说明上述内容。
Table:
Key Value
1 1
1 2
2 3
2 4
在Group By Key
:
GroupKey MinValue
1 = min(1,2) = 1 -> Row 1
2 = min(3,4) = 3 -> Row 2
在Min (Value)
MinValue
=min(1,2,3,4) = 1 -> Row 1
对于上面这样的表,如果要选择所有行并且还显示整个表而不是每个组的最小值,则可以执行以下操作:
select key, (select min(value) from table)
from table
答案 1 :(得分:0)
SELECT WI.*
FROM tblWarehouseItem AS WI INNER JOIN (SELECT whiimtID, MIN(tblWarehouseItem.whiDateIn) AS whiDateIn
FROM tblWarehouseItem
GROUP BY whiimtID) AS MinWI ON (WI.whiDateIn = MinWI.whiDateIn) AND (WI.whiimtID = MinWI.whiimtID);