Mysql

如何拆分欄位並使用它執行子查詢?

  • January 17, 2020

給定下面的兩個表 T1 和 T2,在 MySQL 5.7.x 中有沒有辦法從 T1 獲取這樣的列表欄位,以便 T2 中不存在任何條目?T1.list 是一個正常的 VARCHAR,包含由 ‘:’ 分隔的 T2.vals

從範例中,我想獲得 D:E 欄位。

T1

id list
0  A:B:C
1  D:E
2  F:G

T2

vals
A
B
C
F
G
select t1.id, t1.list
from t1
left join t2 on locate(t2.vals, t1.list)
group by t1.id, t1.list
having 0 = count(t2.vals);

小提琴

在更複雜的情況下(當列表中的標記可能包含一個標記作為子字元串時)您可以使用

select t1.id, t1.list
from t1
left join t2 on locate(concat(':',t2.vals,':'), concat(':',t1.list,':'))
group by t1.id, t1.list
having 0 = count(t2.vals);

引用自:https://dba.stackexchange.com/questions/257641