不太常用的mysql語句

1. 通過字段之間的函數(shù)關(guān)系,計算某個字段的值(即某個字段的值,為其他字段的加減乘除的值)

比方說,你想記錄員工的工作時間(worktime)和工資(salary),這兩者成正比,即worktime=salary*100(常數(shù))。如何通過工作時間直接得到工資的值呢?

一行命令行就可以啦:

update tbname set salary=worktime*100 where id='11111';

這里要注意字段的屬性:是否都是int。如果是varchar的話需要轉(zhuǎn)成int。下面說說mysql的字符串如何轉(zhuǎn)成int。

2. 字符串轉(zhuǎn)int/截取字符串某幾位

字符串轉(zhuǎn)int

參考:MySQL字符串的‘123’轉(zhuǎn)換為數(shù)字的123 - emanlee - 博客園

三種方法如下,我覺得第三種最方便了

1. CAST('123' AS SIGNED)

2. CONVERT('123',SIGNED)

3. '123'+0

截取字符串的某幾位

left(str,length):從左截

right(str,length):從右截

str: 被截的字符串,length: 截取長度

舉例:比如worktime是一個四位的字符串,0410表示4個小時10分鐘,0059表示59分鐘

update tbname set salary=(right(worktime,2)+(left(worktime,2)+0)*60)*100 where id='11111';

(right(worktime,2)+0) 表示截取worktime從右邊開始的兩位,即分鐘數(shù);?

(left(worktime,2)+0)*60 表示截取worktime從左邊開始的兩位,即小時數(shù),再乘60表示分鐘數(shù)。

3. 提取表中某個字段的多行,把它變成一個表的某列

我之前沒有考慮周全,導(dǎo)致原來的數(shù)據(jù)庫的字段很別扭,我想要篩選出其中符合A條件的行,以及符合B條件的行(我事先知道兩者的行數(shù)是相同的),將兩者變成一個新表的兩列,然后這兩列差聽起來就好復(fù)雜啊。

這是我寫過的最長的mysql了,還是挺有用的。

在這個sql語句中我用到了join(同inner join),參考:mysql中join的連接方式

這個sql語句最基礎(chǔ)的結(jié)構(gòu)是:

select A.字段1, B.字段2 from?

(select 字段1 from tbname where 字段=“值”)as A join?

(select 字段2 from tbname where 字段=“值”) as B

但是這樣返回的結(jié)果是所有行的排列組合,它不會把AB的每行對應(yīng)起來。也就是說,假設(shè)這條語句中的A,B分別有10行,結(jié)果有100行而不是10行。所以以上的這個sql語句是不對的?

要想把A,B每行對應(yīng)起來,需要在join后面加on,加上一個能把A, B一一對應(yīng)的條件。比如自增的序號。

加上on條件的sql語句:

select A.字段1, B.字段2 from

(select(@i:=@i+1)i, 字段1 from tbname, (SELECT @i:=0) as i where 字段=“值”) as A join

(select(@j:=@j+1)j, 字段2 from tbname, (SELECT @j:=0) as j where 字段=“值”) as B

on A.i=B.j;

這條語句相當(dāng)于先把A, B表分別加上序號,然后利用這個序號把A,B的每行一一對應(yīng)起來。得到結(jié)果的行數(shù)=A的行數(shù)=B的行數(shù)

?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時請結(jié)合常識與多方信息審慎甄別。
平臺聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點,簡書系信息發(fā)布平臺,僅提供信息存儲服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

  • pyspark.sql模塊 模塊上下文 Spark SQL和DataFrames的重要類: pyspark.sql...
    mpro閱讀 9,917評論 0 13
  • 一. Java基礎(chǔ)部分.................................................
    wy_sure閱讀 4,012評論 0 11
  • 一、SQL速成 結(jié)構(gòu)查詢語言(SQL)是用于查詢關(guān)系數(shù)據(jù)庫的標(biāo)準(zhǔn)語言,它包括若干關(guān)鍵字和一致的語法,便于數(shù)據(jù)庫元件...
    shadow雨軒閱讀 583評論 0 3
  • 2017/3/14 RDBMS:關(guān)系型數(shù)據(jù)庫管理系統(tǒng) 關(guān)系模型獨立于語言 SQL有幾種不同類型的語言:數(shù)據(jù)定義語言...
    ancherl閱讀 1,798評論 0 6
  • 這個問題,在當(dāng)事人看來是“責(zé)任、道德與愛情碰撞”之間的矛盾。在旁觀者看來可能又是“人品與道德”的問題。 在我看來這...
    卿心君悅閱讀 1,785評論 1 10

友情鏈接更多精彩內(nèi)容