我有一个表格,其中包含用户设置了他们想要显示的最小年龄和最大年龄的用户。
表格如下:
=========================================
| 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 |
-----------------------------------------
没有人会看到肯特'因为没有人在他的可见范围内。
这样的事情怎么样?
我看过这样的事情:
SELECT * FROM table_user WHERE age BETWEEN '16' AND '50';
但这当然是另一种方式。
答案 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;