mysql資料庫優先 MySQL 優先條件

2021-10-22 08:20:12 字數 1596 閱讀 3976

我有乙個名為term的表,其id,名稱,school_id和klass_id為屬性.我想返回滿足條件之一的記錄.在詳細解釋問題之前,請看一下表輸出:

id name school_id klass_id

1 term1 null null

2 term2 null null

3 term1 1 4

4 term2 1 4

5 term1 1 3

6 term2 1 3

7 term1 1 null

8 term2 1 null

9 term1 7 null

10 term2 7 null

12 term1 7 103

13 term2 7 103

14 term3 7 103

15 term1 7 30

16 term2 7 30

17 term1 7 32

18 term2 7 32

現在,請注意,在klass_id和school_id之間存在三種情況

> klass_id和school_id都不為null(條件1)

>僅klass_id為null,而不是school_id(條件2)

> school_id和klass_id均為null(條件3)

我只想返回那些滿足第乙個條件的記錄;如果不是,則僅返回那些滿足第二個條件的記錄;如果它不只返回滿足第三個條件的那些記錄.如何在簡單的資料庫查詢中完成此操作?

解決方法:

這樣的事情應該可以解決問題:

select *, ( select min(condition_number) as first_condition_met from (

( select t.*, 1 as condition_number from terms t where ... ) #first condition in where clause

union

( select t.*, 2 as condition_number from terms t where ... ) #second condition in where clause

union

( select t.*, 3 as condition_number from terms t where ... ) #third condition in where clause

) ) from (

( select t.*, 1 as condition_number from terms t where ... ) #first condition in where clause

union

( select t.*, 2 as condition_number from terms t where ... ) #second condition in where clause

union

( select t.*, 3 as condition_number from terms t where ... ) #third condition in where clause

) where condition_number = first_condition_number

標籤:sql,mysql

mysql資料庫優先 MySQL資料庫優化

1.新增索引 mysql資料庫的四類索引 index 普通索引,資料可以重複,沒有任何限制。unique 唯一索引,要求索引列的值必須唯一,但允許有空值 如果是組合索引,那麼列值的組合必須唯一。primary key 主鍵索引,是一種特殊的唯一索引,乙個表只能有乙個主鍵,不允許有空值,一般是在建立表...

mysql資料庫效能資料 MYSQL資料庫效能優化

1.選取最適用的字段屬性 表中字段的寬度設得盡可能小 char 的上限為 255 位元組 固定占用空間 varchar 的上限 65535 位元組 實際占用空間 text 的上限為 65535。盡量把字段設定為 not null,執行查詢的時候,資料庫不用去比較 null 值。2.使用連線 join...

MySQL資料庫使用 MySQL資料庫管理

開發時一般不使用系統的root使用者,應該是建立乙個新的使用者,管理乙個工程。登入使用者的命令 mysql uusername p 登入完成後就進入sql命令格式,格式以 結尾。windows用安裝的時候設定的root登入命令列,如下圖所示。linux安裝時若沒有提示設定root密碼的,可以使用系統...