2011-07-13 88 views
2

我有一个在这里查询是可以在pgAdmin,但是当我转移它在zend它总是说一个错误:subquery must return only one column等等等等。有人可以区分这个问题吗?子查询必须只返回一列

SELECT "trail_history"."new_audit_trail".*, 
     (SELECT "admin".list_category_values_new."values" 
      FROM "admin".list_category_values_new 
      WHERE CAST(seq AS character varying) = "trail_history"."new_audit_trail"."current_value" 
      AND "name" = "trail_history"."new_audit_trail"."name") as "values" 
    FROM "trail_history"."new_audit_trail" 
    WHERE (capno LIKE '12101062411001%') 
    AND (recon = '0') 
ORDER BY "date_happened" DESC 

回答

1

你的子选择(选择“管理员” .list_category_values_new。“值” ......)没有任何关系,防止它返回多个行。您需要使用TOP 1或MAX或其他来确保子选择中只有一条记录。

您可以关联子查询,以便您的主select中的每条记录获取不同的单个值,但是如果您要使用子选择,它只能在main的每行输出中返回一行选择。

+1

这里的术语混淆。错误是子查询应该只返回一个*列*,但它选择了多个。然而,你是正确的..它只能用这里使用的方式返回一行。如果列错误得到纠正,则行错误将是下一个。 –

+0

我认为@OP的问题在术语中包含一个小错误。显然,指定的子查询只返回一列。然而,多行的可能性显然会成为一个问题。 –

+0

@ joel-brown看起来PostgreSQL在术语中遇到了小错误:它是标准错误消息。 –