Sql 中的变量使用
總第162篇/張俊紅
我們在學 Python 或者其他編程語言的時候都應該有學過變量這么一個東西,可是 Sql 這種查詢語言中怎么也有變量呢?具體有什么用呢?
我們來看一下實際應用場景。
現在有這么一個表 t ,表結構如下:
time1 表示瀏覽日期,
time2 表示加購物車日期,
time3 表示下訂單日期,
time4 表示收貨日期。
這四個日期有什么關系呢?就是都有可能不相等,也有可能都相等,還有可能部分相等。如果我們想要看這四個日期都發生在20190801這一天的訂單應該怎么看呢?
Sql代碼可以這么寫:
selectorder_id fromt where?time1?=?"2019-08-01"and?time2?=?"2019-08-01"and?time3?=?"2019-08-01"and?time4?=?"2019-08-01"那如果現在老板又想要看一下這四個日期都發生在20190808這一天的訂單,該怎么看呢?很簡單,直接把上面代碼中的日期改一下就可以了。如果老板還想別的,也直接改代碼中的日期就可以,這樣是可以達到目的,但是大家有沒有想過,如果一段代碼中這種需要改的地方過多,而且代碼與代碼不是挨在一塊的時候,這個時候如果手動去查找并修改的話,很有可能漏掉或改錯。
這個時候變量就該出場了,之前講過,所謂的變量就是一個變化的量,是一個容器,在你可能要更改的地方放一個變量,而不是固定的值,這樣每次你要更改的時候,只需要更改變量的值就可以,其他地方的變量也會跟著一起變,省時又省力,美滋滋。
那我們先來看一下 Mysql 數據庫中怎么設置變量,以下是在 Mysql 中設置變量day的幾種寫法:
set?@day?=?"2019-08-01"; set?@day?:=?"2019-08-01"; select?@day?:=?"2019-08-01";注意,如果使用 select 關鍵詞進行變量賦值時,不可以使用 = 號,因為會默認把它當作比較運算符,而不是賦值,但是用關鍵詞 set 進行變量賦值時是可以直接用 = 號的。現在變量定義并且賦值好了,對于上面的代碼我們就可以這么寫了。
set?@day?=?"2019-08-01"; selectorder_id fromt where?time1?=?@dayand?time2?=?@dayand?time3?=?@dayand?time4?=?@day這樣每次要什么日期的數據,只需要改變變量day的值就可以了。
我們再來看看Hql(Hive-sql)中的變量賦值怎么設置,變量賦值的時候也是用的關鍵詞 set,在變量引用那里和 Mysql 稍有不同,需要多加一個參數 hiveconf。
set?day?=?"2019-08-01"; selectorder_id fromt where?time1?=?${hiveconf:day}and?time2?=?${hiveconf:day}and?time3?=?${hiveconf:day}and?time4?=?${hiveconf:day}以上就是關于 Mysql 和 Hql 這兩種數據庫中變量的使用方法,變量的用法很常見,也確實很有用,大家一定要熟練掌握。
你還可以看:
Sql 的執行順序是怎樣的?
Sql 實現數據透視表功能
講講你不知道的窗口函數
講講 group by 的plus版
介紹一下 information_schema 庫
關于 Group 的另一個函數
內連接的兩種方式
總結
以上是生活随笔為你收集整理的Sql 中的变量使用的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 高通骁龙665跑分是多少 高通骁龙665
- 下一篇: 奇迹mu觉醒钻石怎么花 奇迹MU觉醒钻石