Mysql 如何选择具有相同值的所有行

Mysql 如何选择具有相同值的所有行,mysql,Mysql,这是我的桌子: +----+-------+------+ | id | name | code | +----+-------+------+ | 1 | jack | 1 | | 2 | peter | 1 | | 3 | jack | 1 | | 4 | ali | 2 | | 5 | peter | 3 | | 6 | peter | 1 | | 7 | ali | 2 | | 8 | jack | 3 |

这是我的桌子:

+----+-------+------+
| id | name  | code |
+----+-------+------+
| 1  | jack  | 1    |
| 2  | peter | 1    |
| 3  | jack  | 1    |
| 4  | ali   | 2    |
| 5  | peter | 3    |
| 6  | peter | 1    |
| 7  | ali   | 2    |
| 8  | jack  | 3    |
| 9  | peter | 2    |
| 10 | peter | 4    |
+----+-------+------+
我想选择所有满足以下条件的行:{其
code
值在1-3之间且其
name
vale相同的行数}大于或等于4

根据上述数据,我希望得到以下输出:

+----+-------+------+
| id | name  | code |
+----+-------+------+
| 2  | peter | 1    |
| 5  | peter | 3    |
| 6  | peter | 1    |
| 9  | peter | 2    |
+----+-------+------+

我该怎么做呢?

使用子查询找出应该返回哪些名称,然后在此基础上构建主查询

试试这个:

select *
from mytable
where name in (
    select name
    from mytable
    where code between 1 and 3
    group by name
    having count(*) > 3)
and code between 1 and 3

使用子查询确定应该返回哪些名称,然后在此基础上构建主查询

试试这个:

select *
from mytable
where name in (
    select name
    from mytable
    where code between 1 and 3
    group by name
    having count(*) > 3)
and code between 1 and 3

看,实际上,范围不仅仅是三个数字
1
2
3
。因此,请您在……之间使用
。。。并且…
而不是()中的
?看,实际上范围不止三个数字
1
2
3
。因此,请您在……之间使用
。。。和…
而不是()中的
查询?