我有点被php / Mysql查询卡住了。我有2张桌子:
table_users table_ranks ---------------- ------------------------ | id | points | | name | points_needed | ---------------- ------------------------ | 1 | 2 | | lvl0 | 0 | | 2 | 10 | | lvl1 | 10 | | 3 | 21 | | lvl2 | 20 | | 4 | 29 | | lvl3 | 30 | ---------------- ------------------------
我需要这样的输出:
想你:)
问候。
你可以这样
SELECT tu.id, tr.name, tu.points FROM table_ranks as tr LEFT JOIN (SELECT * FROM table_ranks LIMIT 1,69596585953484) as l ON l.points_needed = (SELECT MIN(points_needed) FROM table_ranks WHERE points_needed > tr.points_needed limit 1) LEFT OUTER JOIN table_users AS tu ON tu.points >= tr.points_needed AND tu.points < l.points_needed WHERE tu.id IS NOT NULL group by tu.id
小提琴
输出
------------------------- | id | points | name | ------------------------- | 1 | lvl0 | 2 | | 2 | lvl1 | 10 | | 3 | lvl2 | 21 | | 4 | lvl2 | 29 | -------------------------