MYSQL:获取符合条件的行

时间:2015-02-26 10:07:01

标签: php mysql phpmyadmin

我有一个表格,其中包含用户设置了他们想要显示的最小年龄和最大年龄的用户。

表格如下:

=========================================
| id | username | age | minAge | maxAge |
=========================================
| 1  | Clark    | 20  | 16     | 50     |
-----------------------------------------
| 2  | Kent     | 33  | 22     | 25     |
-----------------------------------------
| 3  | Bruce    | 45  | 18     | 25     |
-----------------------------------------
| 4  | Wayne    | 40  | 23     | 45     |
-----------------------------------------
  • 如果' Clark'登录后,他会看到:'布鲁斯'。
  • 如果'肯特'登录后,他会看到:' Clark',' Wayne'。
  • 如果'布鲁斯'登录后,他会看到:' Clark',' Wayne'。
  • 如果' Wayne'登录后,他会看到:' Clark'。

没有人会看到肯特'因为没有人在他的可见范围内。

这样的事情怎么样?

我看过这样的事情:

SELECT * FROM table_user WHERE age BETWEEN '16' AND '50';

但这当然是另一种方式。

1 个答案:

答案 0 :(得分:0)

这是年龄列上的join,使用between(或类似逻辑)。挑战在于以正确的顺序获得表格:

select u.username, group_concat(tosee.user_name) as users_seen
from table_user u left join
     table_user tosee
     on tosee.age between u.minage and u.maxage and
        tosee.username <> u.username
group by u.username;