兩個SQL技巧 排序和條件判斷

2021-08-11 18:24:19 字數 599 閱讀 8214

利用虛擬列完成置頂等特定排序

將狀態為2的人,置頂。

select name,age,state,decode(state,2,1,0) as flag

from table1

where ....

order

by flag desc

通過decode方式增加一列虛擬列,使當state為2的時候,flag值為1,否則為0。然後降序排列flag。

有時候會遇到在sql裡加入判斷,來分別執行不同的sql語句,比如賦值和語句。賦值通常select case就搞定了。語句可以通過下邊這種方式,如有其他方式還請斧正。

場景為:當id為2的時候執行語句1,當id非2的時候執行語句2。

select name,age 

from table1

where (id=2 and 語句1) or (id<>2 and 語句2)

...

當id為2時,進入到or前,由於後面只是乙個條件語句,並不會起作用。如果id不為2時,通過or的作用,整句話的條件選擇就變為語句2。這樣可以在sql中達到條件選擇的作用。

sql注入的兩個小技巧

在xfocus看了一篇文章 update注射 mysql php 的兩個模式http xfocus.net articles 200508 815.html 分析一下他所說的兩個模式 假設有表userinfo 該錶有三個字段 使用者名稱username 使用者密碼pass 使用者許可權groupid...

SQL查詢要求兩個條件同時成立

表裡面兩個狀態,乙個是訂單狀態 未處理,處理中,已處理。乙個是付款狀態 未付,已付,已退。現在要求把同時滿足 已處理 和 已付 的記錄不顯示出來。select from table where o state 已處理 and o pay 已付 事實表明這樣會把所有 已處理 和 已付 的訂單全部過濾掉...

C 兩個小技巧

從新新那裡學來的,記錄一下,感覺還挺不錯,哈哈 一。靈活的在注釋與 間轉換 注釋風格 code here 風格 code here 看一下兩者之間,相差什麼呢?只差乙個斜槓 也就是說,只要刪乙個斜槓,就可以把中間這段 注釋掉,增加乙個斜槓,就可以使中間這段 有效。在寫一些測試 時會比較有用。二。寫個...