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
。因此,请您在……之间使用。。。和…
而不是()中的
查询?