teratail header banner
teratail header banner
質問するログイン新規登録

回答編集履歴

1

追記

2019/04/24 02:13

投稿

yambejp
yambejp

スコア117944

answer CHANGED
@@ -1,3 +1,20 @@
1
1
  一番簡単なのはperson1とperson2にまたがるunique属性をつけて
2
2
  常にperson1<person2になるよう値を投入することです
3
- (person1>person2となったとき値を入れ替えて投入する)
3
+ (person1>person2となったとき値を入れ替えて投入する)
4
+
5
+ # 追記
6
+ よく考えたら仮想生成列(virtual generated column)を使うこともできますね
7
+ - テーブル作成
8
+ ```SQL
9
+ create table tbl (
10
+ Con_code int unique key,
11
+ person1 int,
12
+ person2 int,
13
+ person_unique varchar(100) as (concat(least(person1,person2),',',greatest(person1,person2))) unique key
14
+ );
15
+ ```
16
+ - データ挿入
17
+ ```SQL
18
+ insert ignore into tbl(Con_code,person1,person2) values(1,3,1),(2,26,4),(3,1,13),(4,2,4),(5,1,3),(6,3,10);
19
+ ```
20
+ 上記Con_codeは1と前後逆の同等のデータになるため挿入されない