简体   繁体   中英

How to select all rows which have identical values

Here is my table:

+----+-------+------+
| 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    |
+----+-------+------+

I want to select all rows that satisfy: the number of {those rows which its code value is between 1-3 and its name vale is identical} be more or equal than 4

From the above data, I want this output:

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

How can I do that?

Use a subquery to figure out which names should be returned, then build your main query on that.

Try this:

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

The technical post webpages of this site follow the CC BY-SA 4.0 protocol. If you need to reprint, please indicate the site URL or the original address.Any question please contact:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM