2016-11-28 85 views
-2

我有我的数据库中有多个列,但是当我在不同的列中插入数据我想检索我现在插入数据和其他数据的列的数据检索不应受到影响。Mysql查询获取数据从多列到最新时间选定的数据

SELECT h1 FROM latestnews ORDER BY h1 DESC LIMIT 1

+0

只是为了澄清一下,你想修改一个表格行,并想知道你究竟发生了什么变化?你的问题不太清楚。也许提供一个例子? – Splinti

+0

你面临什么问题?/ –

+0

请提供更多细节.. – Techroshni

回答

0

鉴于这种表

drop table if exists mylog; 
create table mylog 
(id int auto_increment primary key, dt date, tbl varchar(100),fld varchar(100), newvalue varchar(100)); 

和该表格

CREATE TABLE `bank_trtypes` (
    `ID` int(11) DEFAULT NULL, 
    `Version` decimal(10,2) DEFAULT NULL, 
    `launchdate` date NOT NULL, 
    `cde` varchar(3) NOT NULL, 
    `LongName` varchar(30) NOT NULL, 
    `crdr` varchar(1) NOT NULL COMMENT 'C=credit,D=Debit,N=Note', 
    `CrLedgerCde` int(11) DEFAULT NULL, 
    `DRLedgerCde` int(11) DEFAULT NULL, 
    `pbk` varchar(1) NOT NULL COMMENT 'y=print to passbook', 
    `stmt` varchar(1) NOT NULL COMMENT 'y=print to stmt' 
) ENGINE=InnoDB DEFAULT CHARSET=latin1 

该触发

drop trigger if exists `t_bank_trtypes_update`; 
delimiter // 

CREATE DEFINER=`root`@`localhost` TRIGGER `t_bank_trtypes_update` after UPDATE ON `bank_trtypes` FOR EACH ROW begin 

    if new.launchdate <> old.launchdate then insert into mylog (dt , tbl,fld , newvalue) values (now(),'bank_trtypes','launchdate',new.launchdate); end if; 
    if new.cde <> old.cde then insert into mylog (dt , tbl,fld , newvalue) values (now(),'bank_trtypes','cde',new.cde); end if; 
    if new.longname <> old.longname then insert into mylog (dt , tbl,fld , newvalue) values (now(),'bank_trtypes','longname',new.longname); end if; 
    if new.crledgercde <> old.crledgercde then insert into mylog (dt , tbl,fld , newvalue) values (now(),'bank_trtypes','crledgercde',new.crledgercde); end if; 
    if new.drledgercde <> old.drledgercde then insert into mylog (dt , tbl,fld , newvalue) values (now(),'bank_trtypes','drledgercde',new.drledgercde); end if; 
    if new.pbk <> old.pbk then insert into mylog (dt , tbl,fld , newvalue) values (now(),'bank_trtypes','pbk',new.pbk); end if; 

end // 

delimiter ; 

会生成(1或多个)的条目入MYL在更新 OG像这样

MariaDB [sandbox]> select * from bank_trtypes; 
+------+---------+------------+-----+----------+------+-------------+-------------+-----+------+ 
| ID | Version | launchdate | cde | LongName | crdr | CrLedgerCde | DRLedgerCde | pbk | stmt | 
+------+---------+------------+-----+----------+------+-------------+-------------+-----+------+ 
| 1 | 2.00 | 2016-01-01 | so | Stand | d |  NULL |  NULL | y | y | 
+------+---------+------------+-----+----------+------+-------------+-------------+-----+------+ 
1 row in set (0.00 sec) 

MariaDB [sandbox]> select * from mylog; 
Empty set (0.00 sec) 

MariaDB [sandbox]> 
MariaDB [sandbox]> update bank_trtypes set pbk = 'n' where 1 = 1; 
Query OK, 1 row affected (0.02 sec) 
Rows matched: 1 Changed: 1 Warnings: 0 

MariaDB [sandbox]> 
MariaDB [sandbox]> select * from mylog; 
+----+------------+--------------+------+----------+ 
| id | dt   | tbl   | fld | newvalue | 
+----+------------+--------------+------+----------+ 
| 1 | 2016-11-28 | bank_trtypes | pbk | n  | 
+----+------------+--------------+------+----------+ 
1 row in set (0.00 sec) 

试着google搜索MYSQL更新触发更多的例子。

+0

非常感谢你先生P.Salmon先生 – prem