我有一个表,其中包含单个单词(例如 A、B 和 C)和复合词(例如 AB、AC 和 AD)。我想选择仅包含预定义单词列表中的单词的所有条目。
示例
id word
-- -----
1 A
2 B
3 C
4 D
5 AB
6 AC
7 AD
给定列表 ('A','B'),我想选择单词 A、B 和 AB。也就是说,我想过滤掉除 A 或 B 之外的所有内容。
当我使用
SELECT * from table WHERE word in ('A','B')
,我只得到A和B,没有复合AB。
当我使用 SELECT * from table WHERE word like '%A%' 或 word like '%B%'
时,我得到 A、B、AB、AC 和 AD。
基本上,我可以执行以下操作:
- 第 1 步:
从表中选择单词,其中单词不喜欢“%A%”且单词不喜欢“%B%”
,返回 C 和 D。 - 第 2 步:
SELECT * from table WHERE word not like '%C%' and word not like '%D%'
,这会返回 A、B 和 AB。
但是,我不知道如何组合这两个查询。我读过有关子查询的内容,但它们不适用于 like 语句。
感谢您的帮助!
最佳答案
您似乎想要一个正则表达式。我认为:
where word regexp '^[AB]+'
这假设“单词”确实意味着“字母”。您可以将其修改为实际单词。
关于MySQL:选择仅包含列表中的元素及其组合的条目,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/54618430/