巧用sql函數(shù)完成業(yè)務(wù)功能

1,case when mysql版本的if

這是一個(gè)類似于我們java中的if的sql函數(shù)艘儒,當(dāng)xx的時(shí)候執(zhí)行xx操作


SELECT
    bus_scheduling.line_id,
CASE    
    WHEN bus_scheduling.is_deleted = 1 AND bus_scheduling.scheduling_time > unix_timestamp( DATE( now( ) ) ) THEN
    1 ELSE 0 
        END AS is_scheduling_time 
FROM
    bus_scheduling 

上述的sql的意思是當(dāng)bus_scheduling表的邏輯刪除字段為1并且scheduling_time 的值大于當(dāng)前時(shí)間的時(shí)候我們能給is_scheduling_time 字段賦值為1其余的情況為2

這個(gè)語(yǔ)法可以結(jié)合group by分組使用帝雇,可以解決一些先分組然后再分頁(yè)涮俄,但是分組的條件需要自己組裝的時(shí)候來使用,還可以結(jié)合min和max之類的函數(shù)獲取特殊的最大值最小值

2尸闸,GROUP_CONCAT 分組并拼接

有的時(shí)候業(yè)務(wù)需求彻亲,需要兩個(gè)表或者三個(gè)表的數(shù)據(jù)孕锄,需要根據(jù)主表的數(shù)據(jù)查詢出子表的與之相關(guān)連的某一個(gè)字段的值,如果使用java代碼實(shí)現(xiàn)就通過兩次查詢苞尝,一次查詢主表分頁(yè)畸肆,然后再根據(jù)主表數(shù)據(jù)來查詢滿足條件的子表的數(shù)據(jù),

那如果要求分組的條件需要使用到子表的數(shù)據(jù)代碼又該如何實(shí)現(xiàn)呢宙址?
SELECT
    GROUP_CONCAT( bs.scheduling_time ) AS scheduling_times, bl.id 
FROM
    bus_line bl
    LEFT JOIN bus_scheduling bs ON bl.id = bs.line_id 
GROUP BY
    bl.id 
HAVING
    scheduling_times IS not  NULL

以上sql的意義是關(guān)聯(lián)兩個(gè)表的數(shù)據(jù)并且查詢出子表中的數(shù)據(jù)并整理到一起轴脐,然后再篩選出bus_scheduling 表中沒有bus_line 關(guān)聯(lián)的scheduling_times 字段的數(shù)據(jù),不僅如此我們的GROUP_CONCAT還可以完成排序以及去重的功能抡砂,同時(shí)我們的字段值還可以套用其他的函數(shù)

SELECT
    GROUP_CONCAT( CONCAT(bs.scheduling_time,'||',bs.id)) AS scheduling_times, bl.id 
FROM
    bus_line bl
    LEFT JOIN bus_scheduling bs ON bl.id = bs.line_id 
GROUP BY
    bl.id 
HAVING
    scheduling_times IS not  NULL
#查詢出來的結(jié)果
1632758400||4762,1632758400||4763,1633881600||4764,1633881600||4765,1633968000||4766,1634486400||4767,1634572800||4768,1634572800||4769,1634572800||4770,1634745600||4773,1634745600||4774,1635436800||4808,1639929600||4927,1640966400||5064   733

還可以在GROUP_CONCAT函數(shù)內(nèi)部使用CONCAT函數(shù)拼接出你所需要的信息
GROUP_CONCAT 返回的結(jié)果是每個(gè)分組之前的多個(gè)值拼接然后使用逗號(hào)連接在一起大咱,我們還可以再添加上去重的功能

3,JSON_OBJECT('json屬性', "內(nèi)容")

這個(gè)函數(shù)可以適用于我們將表中的某些字段組裝成json字符串

SELECT JSON_OBJECT("appkey",app_key,"id",id) FROM `trip_order_special`

#返回結(jié)果
{"id": 191926, "appkey": "ee6f87c7f95d4d45"}

拆分的函數(shù)

REGEXP_SUBSTR(String, pattern, position, occurrence, modifier)

解析:
string: 需要進(jìn)行正則處理的字符串
pattern:進(jìn)行匹配的正則表達(dá)式
position:起始位置注益,從第幾個(gè)字符開始正則表達(dá)式匹配(默認(rèn)為1)
occurrenec:標(biāo)識(shí)第幾個(gè)匹配組碴巾,默認(rèn)為1
modifier:模式('i'不區(qū)分大小寫進(jìn)行檢索;'c'區(qū)分大小寫進(jìn)行檢索聊浅。默認(rèn)為'c'餐抢。)

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
  • 序言:七十年代末现使,一起剝皮案震驚了整個(gè)濱河市低匙,隨后出現(xiàn)的幾起案子,更是在濱河造成了極大的恐慌碳锈,老刑警劉巖顽冶,帶你破解...
    沈念sama閱讀 219,366評(píng)論 6 508
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件,死亡現(xiàn)場(chǎng)離奇詭異售碳,居然都是意外死亡强重,警方通過查閱死者的電腦和手機(jī),發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 93,521評(píng)論 3 395
  • 文/潘曉璐 我一進(jìn)店門贸人,熙熙樓的掌柜王于貴愁眉苦臉地迎上來间景,“玉大人,你說我怎么就攤上這事艺智√纫” “怎么了?”我有些...
    開封第一講書人閱讀 165,689評(píng)論 0 356
  • 文/不壞的土叔 我叫張陵十拣,是天一觀的道長(zhǎng)封拧。 經(jīng)常有香客問我,道長(zhǎng)夭问,這世上最難降的妖魔是什么泽西? 我笑而不...
    開封第一講書人閱讀 58,925評(píng)論 1 295
  • 正文 為了忘掉前任,我火速辦了婚禮缰趋,結(jié)果婚禮上捧杉,老公的妹妹穿的比我還像新娘陕见。我一直安慰自己,他們只是感情好糠溜,可當(dāng)我...
    茶點(diǎn)故事閱讀 67,942評(píng)論 6 392
  • 文/花漫 我一把揭開白布淳玩。 她就那樣靜靜地躺著,像睡著了一般非竿。 火紅的嫁衣襯著肌膚如雪蜕着。 梳的紋絲不亂的頭發(fā)上,一...
    開封第一講書人閱讀 51,727評(píng)論 1 305
  • 那天红柱,我揣著相機(jī)與錄音承匣,去河邊找鬼。 笑死锤悄,一個(gè)胖子當(dāng)著我的面吹牛韧骗,可吹牛的內(nèi)容都是我干的。 我是一名探鬼主播零聚,決...
    沈念sama閱讀 40,447評(píng)論 3 420
  • 文/蒼蘭香墨 我猛地睜開眼袍暴,長(zhǎng)吁一口氣:“原來是場(chǎng)噩夢(mèng)啊……” “哼!你這毒婦竟也來了隶症?” 一聲冷哼從身側(cè)響起政模,我...
    開封第一講書人閱讀 39,349評(píng)論 0 276
  • 序言:老撾萬榮一對(duì)情侶失蹤,失蹤者是張志新(化名)和其女友劉穎蚂会,沒想到半個(gè)月后淋样,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體,經(jīng)...
    沈念sama閱讀 45,820評(píng)論 1 317
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡胁住,尸身上長(zhǎng)有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 37,990評(píng)論 3 337
  • 正文 我和宋清朗相戀三年趁猴,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片彪见。...
    茶點(diǎn)故事閱讀 40,127評(píng)論 1 351
  • 序言:一個(gè)原本活蹦亂跳的男人離奇死亡儡司,死狀恐怖,靈堂內(nèi)的尸體忽然破棺而出余指,到底是詐尸還是另有隱情捕犬,我是刑警寧澤,帶...
    沈念sama閱讀 35,812評(píng)論 5 346
  • 正文 年R本政府宣布浪规,位于F島的核電站或听,受9級(jí)特大地震影響,放射性物質(zhì)發(fā)生泄漏笋婿。R本人自食惡果不足惜誉裆,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 41,471評(píng)論 3 331
  • 文/蒙蒙 一、第九天 我趴在偏房一處隱蔽的房頂上張望缸濒。 院中可真熱鬧足丢,春花似錦粱腻、人聲如沸。這莊子的主人今日做“春日...
    開封第一講書人閱讀 32,017評(píng)論 0 22
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽(yáng)。三九已至耀鸦,卻和暖如春柬批,著一層夾襖步出監(jiān)牢的瞬間,已是汗流浹背袖订。 一陣腳步聲響...
    開封第一講書人閱讀 33,142評(píng)論 1 272
  • 我被黑心中介騙來泰國(guó)打工氮帐, 沒想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留,地道東北人洛姑。 一個(gè)月前我還...
    沈念sama閱讀 48,388評(píng)論 3 373
  • 正文 我出身青樓上沐,卻偏偏與公主長(zhǎng)得像,于是被迫代替她去往敵國(guó)和親楞艾。 傳聞我的和親對(duì)象是個(gè)殘疾皇子参咙,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 45,066評(píng)論 2 355

推薦閱讀更多精彩內(nèi)容