Mysql 查找列值至少出现两次的行?

Mysql 查找列值至少出现两次的行?,mysql,sql,group-by,Mysql,Sql,Group By,我有一张这样的桌子: ID NAME CASE_ID 1 John 33 2 Harry 33 3 James 55 4 John 55 5 John 44 6 Harry 66 我想找到至少有两种情况的人: ID NAME CASE_ID 1 John 33 4 John 55 5 John 44 6 Harry 66 2 Harry 33 我试过这个,但不起作用: SELECT name, case_id FROM t GROUP BY

我有一张这样的桌子:

ID NAME  CASE_ID
1  John  33   
2  Harry 33
3  James 55
4  John  55
5  John  44
6  Harry 66
我想找到至少有两种情况的人:

ID NAME  CASE_ID
1  John  33   
4  John  55
5  John  44
6  Harry 66
2  Harry 33
我试过这个,但不起作用:

SELECT name, case_id
FROM t
GROUP BY case_id
HAVING COUNT(name) > 1;

select
中缺少逗号,这会改变查询的含义:

select name, case_id
from t
group by case_id
having count(name) > 1;
您最初的查询将
name
列重命名为
case\u id
,这不是您的意图

如果需要原始数据,则将表重新加入:

select t.*
from t join
     (select name, count(distinct case_id)
      from t
      group by name
      having count(distinct case_id) > 1
     ) nc
     on t.name = nc.name;

select
中缺少逗号,这会改变查询的含义:

select name, case_id
from t
group by case_id
having count(name) > 1;
您最初的查询将
name
列重命名为
case\u id
,这不是您的意图

如果需要原始数据,则将表重新加入:

select t.*
from t join
     (select name, count(distinct case_id)
      from t
      group by name
      having count(distinct case_id) > 1
     ) nc
     on t.name = nc.name;

select
中缺少逗号,这会改变查询的含义:

select name, case_id
from t
group by case_id
having count(name) > 1;
您最初的查询将
name
列重命名为
case\u id
,这不是您的意图

如果需要原始数据,则将表重新加入:

select t.*
from t join
     (select name, count(distinct case_id)
      from t
      group by name
      having count(distinct case_id) > 1
     ) nc
     on t.name = nc.name;

select
中缺少逗号,这会改变查询的含义:

select name, case_id
from t
group by case_id
having count(name) > 1;
您最初的查询将
name
列重命名为
case\u id
,这不是您的意图

如果需要原始数据,则将表重新加入:

select t.*
from t join
     (select name, count(distinct case_id)
      from t
      group by name
      having count(distinct case_id) > 1
     ) nc
     on t.name = nc.name;

您将需要一个子查询来完成此操作。首先,我将编写一个子查询,获取两种或两种以上不同情况下的人员姓名:

SELECT name
FROM myTable
GROUP BY name
HAVING COUNT(distinct case_id) >= 2;
您可以将其与原始表联接,条件是名称匹配以获取所有这些人:

SELECT m.*
FROM myTable m
JOIN(
  SELECT name
  FROM myTable
  GROUP BY name
  HAVING COUNT(distinct case_id) >= 2) t ON t.name = m.name;
这将给出您想要的结果。它们是无序的,但是如果需要的话,我想你可以加上


以下是示例。

您需要一个子查询来完成此操作。首先,我将编写一个子查询,获取两种或两种以上不同情况下的人员姓名:

SELECT name
FROM myTable
GROUP BY name
HAVING COUNT(distinct case_id) >= 2;
您可以将其与原始表联接,条件是名称匹配以获取所有这些人:

SELECT m.*
FROM myTable m
JOIN(
  SELECT name
  FROM myTable
  GROUP BY name
  HAVING COUNT(distinct case_id) >= 2) t ON t.name = m.name;
这将给出您想要的结果。它们是无序的,但是如果需要的话,我想你可以加上


以下是示例。

您需要一个子查询来完成此操作。首先,我将编写一个子查询,获取两种或两种以上不同情况下的人员姓名:

SELECT name
FROM myTable
GROUP BY name
HAVING COUNT(distinct case_id) >= 2;
您可以将其与原始表联接,条件是名称匹配以获取所有这些人:

SELECT m.*
FROM myTable m
JOIN(
  SELECT name
  FROM myTable
  GROUP BY name
  HAVING COUNT(distinct case_id) >= 2) t ON t.name = m.name;
这将给出您想要的结果。它们是无序的,但是如果需要的话,我想你可以加上


以下是示例。

您需要一个子查询来完成此操作。首先,我将编写一个子查询,获取两种或两种以上不同情况下的人员姓名:

SELECT name
FROM myTable
GROUP BY name
HAVING COUNT(distinct case_id) >= 2;
您可以将其与原始表联接,条件是名称匹配以获取所有这些人:

SELECT m.*
FROM myTable m
JOIN(
  SELECT name
  FROM myTable
  GROUP BY name
  HAVING COUNT(distinct case_id) >= 2) t ON t.name = m.name;
这将给出您想要的结果。它们是无序的,但是如果需要的话,我想你可以加上



这是一个例子。

是的。这就是我键入sql时的错误。但是这个结果与我想要的不匹配。我不仅要显示1个记录计数名称>1。我想看看他们所有人。@chanjianyi。这就是第二个查询所做的。我已经尝试过了。但是两个sql结果都是相同的。我在fiddle中运行了这个,我认为这里的差异在于它返回的案例中有两个或更多的人。如果我明白的话,OP正在寻找有两个或两个以上案例的人。这就是我键入sql时的错误。但是这个结果与我想要的不匹配。我不仅要显示1个记录计数名称>1。我想看看他们所有人。@chanjianyi。这就是第二个查询所做的。我已经尝试过了。但是两个sql结果都是相同的。我在fiddle中运行了这个,我认为这里的差异在于它返回的案例中有两个或更多的人。如果我明白的话,OP正在寻找有两个或两个以上案例的人。这就是我键入sql时的错误。但是这个结果与我想要的不匹配。我不仅要显示1个记录计数名称>1。我想看看他们所有人。@chanjianyi。这就是第二个查询所做的。我已经尝试过了。但是两个sql结果都是相同的。我在fiddle中运行了这个,我认为这里的差异在于它返回的案例中有两个或更多的人。如果我明白的话,OP正在寻找有两个或两个以上案例的人。这就是我键入sql时的错误。但是这个结果与我想要的不匹配。我不仅要显示1个记录计数名称>1。我想看看他们所有人。@chanjianyi。这就是第二个查询所做的。我已经尝试过了。但是两个sql结果都是相同的。我在fiddle中运行了这个,我认为这里的差异在于它返回的案例中有两个或更多的人。如果我理解的话,OP是在寻找有两个或两个以上案例的人,你是说大于或至少2个?因为Harry只有两个例子。对不起,我的英语不好,我的意思是至少2。为什么不举一个更具代表性的例子呢?你的意思是大于或至少2?因为Harry只有两个例子。对不起,我的英语不好,我的意思是至少2。为什么不举一个更具代表性的例子呢?你的意思是大于或至少2?因为Harry只有两个例子。对不起,我的英语不好,我的意思是至少2。为什么不举一个更具代表性的例子呢?你的意思是大于或至少2?我的意思是:至少我的意思是:为什么不举一个更具代表性的例子呢?