Mysql中讓兩個欄位不同時相同的方法

2022-03-03 21:07:46 字數 735 閱讀 3879

有時候我們會遇到這樣的一種情況:有一些不同的專業,每個專業中有一些不同的學號,專業+學號能對應到個人。這時,應該如何在資料庫中定義列,來保證專業+學號對應的學生的唯一性呢?

把學號定義成唯一(unique)顯然是行不通的,因為a專業和b專業都存在1000這樣乙個學號。

方法1:聯合主鍵

primary

key(major,id);

不推薦。因為聯合主鍵會給表的維護帶來不便。另外,可能已經設定好了主鍵。

)聯合唯一約束:(建立唯一性約束時會自動建立唯一性索引)

alter

table student add

constraint major_id unique (major,id);

聯合唯一索引:

create

unique

index major_id_index on student(major,id);

二者的區別:

①當往資料庫中插入20條資料,其中5條資料重複時,如果用唯一性約束,結果必然是20條資料全部被拒絕插入。如果使用唯一性索引,若開啟了「忽略重複值」開關(插入時在insert後面加上ignore,即:insert ignore into students () values ();),則會將15條不重複的資料正確插入,5條重複資料被忽略。

②如果某列多行值為null,則不能在該列上建立唯一性索引。

兩個字段 使用R語言比較兩個字段不同的字元數

一 需求背景 有5000個車牌號,需要找出那些前兩位相同,後五位相差乙個字元的車牌。源資料如下 按需求找出來的資料如下 二 問題分析 5000個車牌號在excel中數量很少。但是處理這個問題需要對所有前兩位相同的車牌兩兩比對。那樣資料量是1973780條。暫不知怎麼用excel處理。所以這裡使用的工...

mysql 兩個字段拼接 mysql 多個字段拼接

mysql的查詢結果行欄位拼接,能夠用以下兩個函式實現 1.concat函式 mysql select concat 1 2 3 from test concat 1 2 3 123 假設連線串中存在null,則返回結果為null mysql select concat 1 2 null,3 fro...

GROUP BY 兩個字段

create table test a varchar 10 b varchar 10 c int insert into test values a 甲 1 insert into test values a 甲 1 insert into test values a 甲 1 insert int...