Mysql SELECT无法正常工作

时间:2011-10-01 21:38:34

标签: mysql join

我有桌子:

用户

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

但只选择了一个步骤。

感谢您的帮助!

2 个答案:

答案 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'方法?