我有桌子:
用户
ID | RANK | NAME | EMAIL | PASS
01 | 1 | Foo | foo@bar.com | $06$uhAMXXZowVIDQ.ZR1gky.u3f/UBkLW8Kd8cbyDt2eNx1qnZH2AUmW
允许
ID | RANK | STEP
01 | 1 | 1
02 | 1 | 2
03 | 1 | 3
04 | 2 | 1
05 | 4 | *
并且,我需要知道用户排名中允许的所有步骤。
我的代码:
SELECT users.*, allow.step AS allow_step
FROM users AS users LEFT JOIN allow ON users.rank = allow.rank
但只选择了一个步骤。
感谢您的帮助!
答案 0 :(得分:1)
SELECT u.*, GROUP_CONCAT(a.step) allow_step
FROM users u
LEFT JOIN allow a
ON u.rank = a.rank
GROUP BY a.rank_id
这应该选择以逗号分隔的步骤列表。类似于1,2,3
。
如果需要排序连接值,请将查询的第一行更改为:
SELECT u.*, GROUP_CONCAT(a.step ORDER BY a.step) allow_step
答案 1 :(得分:0)
给定的SQL和数据将产生三行 - 甚至不使用LEFT JOIN(简单的JOIN就足够了)。
您没有显示或描述您如何运行SQL;你需要在循环中获取多行,还是使用一些'fetch all rows'方法?