Mysql 如何从同一列中选择满足2个要求的用户

Mysql 如何从同一列中选择满足2个要求的用户,mysql,sql,select,Mysql,Sql,Select,我试图回答以下问题。我需要在曲目栏中选择同时听过曲目1和曲目2的用户。出于某种原因,我完全不知道如何做到这一点。以下是其中一种方法: SELECT user_id from TABLE_NAME WHERE track = 'track_1' AND user_id IN (SELECT user_id from TABLE_NAME where track = 'track_2'); 以下是其中一种方法: SELECT user_id fro

我试图回答以下问题。我需要在曲目栏中选择同时听过曲目1和曲目2的用户。出于某种原因,我完全不知道如何做到这一点。

以下是其中一种方法:

SELECT user_id from TABLE_NAME 
WHERE track = 'track_1' AND 
           user_id IN 
           (SELECT user_id from TABLE_NAME where track = 'track_2');

以下是其中一种方法:

SELECT user_id from TABLE_NAME 
WHERE track = 'track_1' AND 
           user_id IN 
           (SELECT user_id from TABLE_NAME where track = 'track_2');

如果只有两个,您也可以使用GROUP BY并拥有:

SELECT user_id
FROM t
GROUP BY user_id
HAVING COUNT(DISTINCT track) > 1

如果只有两个,您也可以使用GROUP BY并拥有:

SELECT user_id
FROM t
GROUP BY user_id
HAVING COUNT(DISTINCT track) > 1

可能比需要where exists子查询更简单

Select userID
from yourtable
where Track in ('Track 1','Track 2')
group by userid
having count(1) = 2

可能比需要where exists子查询更简单

Select userID
from yourtable
where Track in ('Track 1','Track 2')
group by userid
having count(1) = 2

您可以计算每个用户收听的相关曲目的数量:

SELECT   user_id
FROM     mytable
WHERE    track IN ('track_1', 'track_2')
GROUP BY user_id
HAVING   COUNT(DISTINCT track) = 2

您可以计算每个用户收听的相关曲目的数量:

SELECT   user_id
FROM     mytable
WHERE    track IN ('track_1', 'track_2')
GROUP BY user_id
HAVING   COUNT(DISTINCT track) = 2
这样行吗

SELECT UserId
FROM YourTable
WHERE Track in ('track_1','track_2')
group by UserId
Having  count(distinct Track) > 1;
这样行吗

SELECT UserId
FROM YourTable
WHERE Track in ('track_1','track_2')
group by UserId
Having  count(distinct Track) > 1;

谢谢另一个问题。如果我想知道每首歌的发行日期呢。我会使用min功能吗?谢谢!另一个问题。如果我想知道每首歌的发行日期呢。我会使用min函数吗?