2014-03-19 58 views
0

我想DONOT r.reguser_id作为结果测试列,如果我删除Select语句此列,然后我在有问题,其中bu.business_id = r.reguser_id并得到了一个错误超过1行返回。中获得价值的子查询

SELECT r.reguser_name , r.reguser_id as test, 

(Select r.reguser_id as c, GROUP_CONCAT(i.industry_name) as Industry 

From reguser r inner JOIN business_industry bu ON r.reguser_id = bu.business_id join industry i ON bu.industry_id = i.industry_id 

WHERE bu.business_id = test 

GROUP BY bu.business_id 
) as indus 

FROM reguser r 

请告诉我如何解决此问题? 谢谢。

回答

1
SELECT r.reguser_name , r.reguser_id, 

(Select r1.reguser_id as c, GROUP_CONCAT(i.industry_name) as Industry 

From reguser r1 inner JOIN business_industry bu ON r1.reguser_id = bu.business_id join industry i ON bu.industry_id = i.industry_id 

WHERE bu.business_id = r.reguser_id 

GROUP BY bu.business_id 
) as indus 

FROM reguser r 

不要在子查询中为主表和表使用相同的联接。这是非常糟糕的做法

+0

是,改变R以R1解决我的问题,完善谢谢。 – chwajahat

0
SELECT t1.user_name FROM 
(SELECT r.reguser_name as user_name, r.reguser_id as test, 

(Select r.reguser_id as c, GROUP_CONCAT(i.industry_name) as Industry 

From reguser r inner JOIN business_industry bu ON r.reguser_id = bu.business_id join  industry i ON bu.industry_id = i.industry_id 

WHERE bu.business_id = test 

GROUP BY bu.business_id 
) as indus 

FROM reguser r)t1 
WHERE t1.user_name IS NOT NULL 

我认为你需要有某种形式的where子句的,如果你要查询这种方式在使用SQL Developer的,即,让一个别名将选择查询。希望这有助于..