我的数据如下:
|User ID |Install Version |
|--------------------------------|
| Value A | Pattern 1 |
| Value B | Pattern 1 |
| Value A | Pattern 2 |
| Value C | Pattern 2 |
| Value D | Pattern 1 |
我只想选择一个或多个条目匹配
Pattern 1
和Pattern 2
的用户id。所以在上面的例子中,我只想选择Value a
。基本上,我想比较哪个用户Id同时安装了“Lite”和“Full”软件产品。例如,因为
Value B
没有与Pattern 1
和Pattern 2
配对的条目,所以我不想选择它。将有许多用户ID条目,但安装的版本很少。这个问题我已经处理了好一阵子了,但还是有点麻烦。
最佳答案
我可以想到两种方法,一种是使用GROUP_CONCAT,另一种是使用子查询。
SELECT user_id, GROUP_CONCAT(installed_version) as all_patterns
FROM your_table
GROUP BY user_id
HAVING all_patterns REGEXP 'Pattern 1'
AND all_patterns REGEXP 'Pattern 2';
--
SELECT * FROM
(
SELECT user_id, installed_version FROM your_table
WHERE installed_version LIKE 'Pattern 1'
) as tmp
WHERE installed_version LIKE 'Pattern 2';
关于sql - SQL查询以选择与第2列中的两个模式之一匹配的第1列中的值对,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/55233121/