如何使用select获取多行?

时间:2016-05-30 13:35:08

标签: mysql

我正在尝试跟踪桌面上发生的所有更改

我试过了这个查询

Update Stocks
Set stockOut = 100
,TrackDate = '1/30/2016'
 ,stockOnHand = stockOnHand - 400
 WHERE itemID = '4589-S';

和这一个。两个人在不同的日期。

    Update Stocks
Set stockOut = 200
,TrackDate = '2/30/2016'
 ,stockOnHand = stockOnHand - 400
 WHERE itemID = '4589-S';

现在我使用了这个查询

SELECT
[ItemID]
      ,[ProdID]
      ,[stockOnHand]
      ,[stockIn]
      ,[stockOut]
      ,[TrackDate]
 from Stocks
where TrackDate between '1/30/2016' and '5/30/2016'

跟踪特定范围内的变化 date.But我只获得 1 结果

我期待得到2个结果,因为我已经在两个不同的日期更新了这个表。

3 个答案:

答案 0 :(得分:1)

你需要两张桌子,

股票& STOCK_HISTORY

插入/更新股票时,您还应在STOCK_HISTORY表中创建新记录。该表的列应该是ID,STOCK_ID,ACTION(创建,更新,删除)和TIMESTAMP。

这样,您在STOCK表中没有无用信息,并且只要您想列出您所做股票的所有变更:



SELECT * FROM stocks s
  JOIN stock_history sh ON sh.stockId = s.id
  WHERE s.id = $stockId




答案 1 :(得分:0)

UPDATE查询更改现有行。

INSERT查询添加新行。

您的更新查询都更改了同一行。

答案 2 :(得分:0)

  

要归档对表格所做的每项更改,请添加 TRIGGER   http://dev.mysql.com/doc/refman/5.7/en/trigger-syntax.html

触发器将通过将行写入另一个表来存档整行或部分行,以防该行被删除或更新。您必须在TRIGGER-Definition中定义更改行时确切发生的情况以及应归档行的哪些值。