假設是學生退出登錄時在t1表刪除數據

成都創新互聯公司是一家專業提供堆龍德慶企業網站建設,專注與網站建設、網站制作、成都h5網站建設、小程序制作等業務。10年已為堆龍德慶眾多企業、政府機構等服務。創新互聯專業網絡公司優惠進行中。
假設id各為兩個表的主鍵
select
*
from
t2
where
id
not
in
(select
id
from
t1)
結果集是t2表中id不在t1表的數據
先貼出來我的腳本:
#/bin/bash
User="test"
Pass="123456"
Hos="192.168.133.167"
Da=`date `
record_path="/tmp/daily_r.txt"
MYSQL="/usr/mysql/bin/mysql"
echo "采集速度時間間隔超過半天即為不正常" $record_path
$MYSQL -u$User -p$Pass -h$Hos -e "select TIMESTAMPDIFF(second, createtime, pubdate) as '相差秒數',createtime,pubdate,keyword_tx from adresource_test.tbl_newscontent_test order by d_id desc limit 1\G;" $record_path
然后我解釋下腳本含義,首先我這個腳本是統計我adresource_test 表中的關于新聞內容的一個采集時間一個入庫時間的差值,就此來判斷我的數據入庫程序正常與否。
User是數據庫用戶名,Pass 是數據庫密碼 Hos是數據庫地址Da 是我要記錄一個日期,比對當前日期,也相當于留個日志 record_path 日志記錄位置
MYSQL是mysql的bin目錄,防止命令找不到。
3
計算tbl_test 表中的兩個字段一個是發布時間一個是創建時間,使用變量TIMESTAMPDIFF 來計算二者的差值,
creattime - pubdate。minute的意思是以分鐘來做結果單位,limit 2 是兩條記錄
這個結果要從第一個開始嗎?那樣就有點復雜了。這個行不行,結果是從第二行開始的:
mysql?set?@last_id?:=?-1;
Query?OK,?0?rows?affected?(0.00?sec)
mysql?select?id,?A,?B,?result
-?from
-?(
-?????select
-?????????table1.*,
-?????????@last_id,
-?????????if(@last_id??0,?null,?id?-?@last_id)?as?result,
-?????????@last_id?:=?id
-?????from
-?????????table1
-?)?as?tmp
-?;
+----+------+------+--------+
|?id?|?A????|?B????|?result?|
+----+------+------+--------+
|??1?|????2?|????1?|???NULL?|
|?21?|????1?|????1?|?????20?|
|?33?|????3?|????2?|?????12?|
+----+------+------+--------+
3?rows?in?set?(0.00?sec)
TIMESTAMPDIFF(interval,datetime_expr1,datetime_expr2)
返回日期或日期時間表達式datetime_expr1?和datetime_expr2the?之間的整數差。
其結果的單位由interval?參數給出。該參數必須是以下值的其中一個:
FRAC_SECOND?表示間隔是毫秒
SECOND??秒
MINUTE??分鐘
HOUR??小時
DAY??天
WEEK??星期
MONTH??月
QUARTER??季度
YEAR??年
SELECT?'年'??AS??`日期部分`,??TIMESTAMPDIFF(YEAR,?'2012-12-21',??CURRENT_TIMESTAMP())?AS?`數值`
UNION?ALL
SELECT?'季度'??AS??`日期部分`,??TIMESTAMPDIFF(QUARTER,?'2012-12-21',?CURRENT_TIMESTAMP())?AS?`數值`
UNION?ALL
SELECT?'月'??AS??`日期部分`,??TIMESTAMPDIFF(MONTH,?'2012-12-21',?CURRENT_TIMESTAMP())?AS?`數值`
UNION?ALL
SELECT?'日'??AS??`日期部分`,??TIMESTAMPDIFF(DAY,?'2012-12-21',?CURRENT_TIMESTAMP())?AS?`數值`
UNION?ALL
SELECT?'周'??AS??`日期部分`,???TIMESTAMPDIFF(WEEK,?'2012-12-21',?CURRENT_TIMESTAMP())?AS?`數值`
UNION?ALL
SELECT?'時'??AS??`日期部分`,???TIMESTAMPDIFF(HOUR,?'2012-12-21',?CURRENT_TIMESTAMP())?AS?`數值`
UNION?ALL
SELECT?'分'??AS??`日期部分`,???TIMESTAMPDIFF(MINUTE,?'2012-12-21',?CURRENT_TIMESTAMP())?AS?`數值`
UNION?ALL
SELECT?'秒'??AS??`日期部分`,???TIMESTAMPDIFF(SECOND,?'2012-12-21',?CURRENT_TIMESTAMP())?AS?`數值`
;
+----------+----------+
|?日期部分?|?數值?????|
+----------+----------+
|?年???????|????????1?|
|?季度?????|????????4?|
|?月???????|???????12?|
|?日???????|??????388?|
|?周???????|???????55?|
|?時???????|?????9328?|
|?分???????|???559737?|
|?秒???????|?33584279?|
+----------+----------+
8?rows?in?set?(0.00?sec)
mysql?select?CURRENT_TIMESTAMP();
+---------------------+
|?CURRENT_TIMESTAMP()?|
+---------------------+
|?2014-01-13?16:58:17?|
+---------------------+
1?row?in?set?(0.00?sec)
delimiter //
create trigger trigger1 after update on B for each row
begin
declare sl int;
set sl=NEW.退貨數量;
update A set 數量=數量-sl;
end //
方法挺多的,很多是采用排序直接對等連接,這樣對于主鍵聚集索引比較快的。
----
我提供的不是排序對等
方式,而是大范圍連接檢索最小距離的方式。
SELECT
A.FID,A.Fnum,MIN(A.Fid-B.Fid)
as
差值
FROM
test.cte
A
INNER
JOIN
test.cte
B
on(A.FIDB.FID)
GROUP
BY
A.FID,A.Fnum
ORDER
BY
A.Fid
Desc
---
執行結果:
FID
Fnum
差值
-------------------------
'9323',
'10',
'14'
'9309',
'10',
'1'
'9308',
'10',
'47'
'9261',
'10',
'31'
'9230',
'10',
'23'
'9207',
'10',
'16'
'9191',
'10',
'26'
'9165',
'10',
'14'
當前標題:mysql兩個數值怎么求差 表格怎么求兩個數的差
本文鏈接:http://www.yijiale78.com/article0/doddeio.html
成都網站建設公司_創新互聯,為您提供ChatGPT、網站策劃、搜索引擎優化、標簽優化、品牌網站設計、品牌網站制作
聲明:本網站發布的內容(圖片、視頻和文字)以用戶投稿、用戶轉載內容為主,如果涉及侵權請盡快告知,我們將會在第一時間刪除。文章觀點不代表本網站立場,如需處理請聯系客服。電話:028-86922220;郵箱:631063699@qq.com。內容未經允許不得轉載,或轉載時需注明來源: 創新互聯