我的数据如下:

|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 1Pattern 2的用户id。所以在上面的例子中,我只想选择Value a
基本上,我想比较哪个用户Id同时安装了“Lite”和“Full”软件产品。例如,因为Value B没有与Pattern 1Pattern 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/

10-15 20:43