mysql 逗号金额比较,如何使用MySQL比较两个逗号分隔的字符串列表
我使用了一個名為“ containsAll()”的Java方法來檢查ArrayLists是否具有共同的內容.
假設我在MySQL表中有一個列表A(一行)和其他幾個列表(在“名稱”列中,逐行).
所有列表均由逗號分隔的字符串(列表中至少一個字符串)組成-名稱或其他名稱.
現在,我想檢查列表A中的所有字符串是否都可以在“名稱”列的任何行中找到.
結果集應顯示“名稱”中匹配的所有行,包括行/列表的行必須具有列表A中的所有字符串,并且可以具有其他字符串.
例子一
答:“ T先生”
____name_________________________________________
'Hannibal'
'Hannibal','Face','Murdock','Mr.T','Donald Duck'
'Face','Donald Duck'
'Superman','Chuck Norris','Mr.T'
_________________________________________________
結果集:“漢尼拔”,“臉部”,“默多克”,“ T先生”,“唐老鴨”-AND-
‘超人’,查克·諾里斯’,’T先生’
例二
答:“ Rocky”,“ Mr.T”,“ Apollo”
______name__________________________________________________
'Hannibal','Face','Murdock','Donald Duck','Superman','Mr.T'
'Rocky','Apollo','Ivan'
'Apollo', 'Superman','Hannibal','Rocky','Mr.T','Chuck Norris'
'Rocky','Mr.T','Apollo','Chuck Norris'
_____________________________________________________________
結果集:“ Apollo”,“ Superman”,“ Hannibal”,“ Rocky”,“ Mr.T”,“ Chuck Norris” -AND-
‘Rocky’,’T先生’,’Apollo’,’Cuck Norris’
我想知道是否可以使用MySQL查詢執行那些結果.
先感謝您.
解決方法:
看來您想做一個數組交集,除了數組是單列.可以做到,但是會很慢,難以調試,并且不會利用關系數據庫的功能.更好的方法是將表架構更改為以下形式:
表組
group_id int unsigned not null auto_increment primary key,
character_list text
表members_in_group
group_id int unsigned not null,
group_member varchar(45) not null
然后您可以像這樣查詢:
SELECT group_id, character_list
FROM groups g
JOIN members_in_groups m USING (group_id)
WHERE m.group_member IN ('Mr. T', ...);
groups表可能非常類似于您當前的表. Members_in_groups表是分割成易于搜索的部分的相同數據.
ETA給出了您的評論,如果您可以保證每個character_list僅包含每個字符的一個實例,則此方法應該起作用:
SELECT group_id,
SUM(CASE m.group_member IN ('Mr. T', 'Apollo', 'Rocky') THEN 1 ELSE 0 END) AS tally,
character_list
FROM groups g
JOIN members_in_groups m ON (g.group_id=m.group_id)
GROUP BY group_id
HAVING SUM(CASE m.group_member IN ('Mr. T', 'Apollo', 'Rocky') THEN 1 ELSE 0 END) = 3;
在這種情況下,HAVING子句必須等于3,因為IN中有3個成員(“ Mr. T”,“ Apollo”,“ Rocky”).
標簽:mysql,list
來源: https://codeday.me/bug/20191011/1892301.html
總結
以上是生活随笔為你收集整理的mysql 逗号金额比较,如何使用MySQL比较两个逗号分隔的字符串列表的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 2019美元汇率到8?人民币对美元汇率会
- 下一篇: mysql linux 优化_mysql