我使用了postgresql。在 sql fiddle 中创建表并在数据库模式中插入一些数据后 -
CREATE TABLE stock_table
(trade_type character varying, trade_date timestamp, trade_code_id bigint, trade_code character varying, qty_out double precision, qty_in double precision, price double precision, row_num bigint, stock_volume double precision)
;
COMMENT ON TABLE stock_table
IS '
trade_type:
SI: Initial quantity in stock
SS: Stock Sell
SB: Stock Buy
';
INSERT INTO stock_table
(trade_type, trade_date, trade_code_id, trade_code, qty_out, qty_in, price, row_num, stock_volume)
VALUES
('SB', '2016-11-30 13:35:12', 52, 'ACI', 0, 600, 1037.28, 1, 600),
('SI', '2016-11-30 13:37:12', 53, 'IFIC', 0, 300, 1357.38, 2, 300),
('SS', '2016-12-01 11:35:12', 53, 'IFIC', 100, 0, 1354.16, 3, 200),
('SS', '2016-12-01 13:36:37', 53, 'IFIC', 150, 0, 1355.25, 4, 50),
('SS', '2016-12-01 14:35:12', 52, 'ACI', 100, 0, 1035.26, 5, 500),
('SS', '2016-12-01 14:36:12', 52, 'ACI', 200, 0, 1035.04, 6, 300),
('SB', '2016-12-01 14:36:20', 53, 'IFIC', 0, 1040, 1356.44, 7, 1090),
('SB', '2016-12-01 16:35:12', 52, 'ACI', 0, 1560, 1045, 8, 1860),
('SS', '2016-12-02 13:35:12', 52, 'ACI', 120, 0, 1039.08, 9, 1740),
('SS', '2016-12-02 13:45:12', 53, 'IFIC', 100, 0, 1358.95, 10, 990),
('SB', '2016-12-02 13:55:12', 52, 'ACI', 0, 600, 1038.71, 11, 2340),
('SB', '2016-12-02 14:05:12', 53, 'IFIC', 0, 1040, 1363.3, 12, 2030),
('SS', '2016-12-03 13:35:12', 52, 'ACI', 100, 0, 1037.78, 13, 2240),
('SB', '2016-12-04 13:35:12', 53, 'IFIC', 0, 20, 1365.87, 14, 2050),
('SB', '2016-12-04 17:35:12', 52, 'ACI', 0, 50, 1054.19, 15, 2290)
;
我试图更新某一列上某一行的数据。
update stock_table
set trade_type = 'SI'
where row_num = (SELECT row_num FROM stock_table
WHERE (trade_date between '2016-12-01' and '2016-12-03')
and trade_code='ACI'
and trade_type='SB'
LIMIT 1);
select * from stock_table;
它可以工作并使用更新的数据库显示结果。但是在我运行查询以单独显示表之后,select * from stock_table
它显示初始数据库 - 没有更新。更新仅在我同时运行update
和select all
查询时显示。你能告诉我这是为什么吗?这是sql小提琴