SQL Query在Query中返回多个结果

时间:2011-03-12 19:44:46

标签: mysql sql coldfusion

我正在尝试从brewsrecipes表中获取来自表中的跟随者数量的信息,但是我收到了一个sql错误,因为我返回的不仅仅是一个结果在我的查询中。我应该把它分成两个查询吗?或者是否有解决方法可以让我在我的外b.uid语句中检查多个WHERE

SELECT 
  b.bid AS bid, b.name AS bname, 
  r.name AS recipe, b.status AS status, 
  r.rid, a.f_name, a.l_name, a.pic_loc, a.uid AS uid
FROM 
  recipes r, brews b, account a
WHERE 
  b.uid = (SELECT followed FROM follow 
  WHERE follower = '#cookie.id#') 
  AND b.rid = r.rid AND b.uid = a.uid 
GROUP BY b.bid
ORDER BY b.time DESC

3 个答案:

答案 0 :(得分:3)

只需使用WHERE b.uid IN (SELECT followed...

即可

答案 1 :(得分:0)

要返回多个结果集,您需要使用cfstoredproc,但这不是您的问题。在where子句中将“=”符号更改为IN,或将select更改为连接。您的问题只是一个错误的查询,而不是多个结果集。

SELECT 
    b.bid AS bid, b.name AS bname, r.name AS recipe, 
    b.status AS status, r.rid, a.f_name, a.l_name, 
    a.pic_loc, a.uid AS uid
FROM 
    recipes AS r
    LEFT JOIN brews AS b
        ON b.rid = r.rid
    LEFT JOIN account AS a
        ON b.uid = a.uid
    LEFT JOIN follow AS f
        ON f.followed = b.uid
WHERE f.follower = <cfqueryparam cfsqltype="CF_SQL_VARCHAR" value="#cookie.id#" />
GROUP BY b.bid
ORDER BY b.time DESC

答案 2 :(得分:0)

GROUP BY子句可能也会引起您的问题。如果使用聚合函数(SUM(),AVG(),MIN(),MAX()等等)并且需要对总计的记录进行分组,则查询中只应该有一个GROUP BY子句。进入小组。