在主查询中获取子查询值

时间:2013-06-28 07:06:46

标签: sql

我使用以下查询来获取客户详细信息。但它没有用,请帮助我。我是SQL新手。

select cu.fld_cust_id,ord.* from test1 where fld_order_id ord in (select * from tbl_customer cu where cu.fld_status=1);

3 个答案:

答案 0 :(得分:1)

  1. 您无法从WHERE子句中使用的子查询中选择列,因为它们未加入此查询。您只是使用从此子查询返回的值范围

  2. 您的子查询应该只返回一列。

  3. 你应该尝试这样的事情。

    SELECT cu.fld_cust_id,ord。* 从test1 JOIN tbl_customer cu ON cu.fld_status = 1 AND fld_order_id = cu.fld_cust_id

答案 1 :(得分:0)

在查询中,您还需要注意,您只能看到当前范围中的字段。因此,在主查询中,您只使用FROM TEST1,因此您只能看到该表中的字段。 ord。*和使用cu会产生错误。如果您需要该表中的其他字段,请使用JOIN。 TEST1表应包含链接到TBL_CUSTOMER的外键,否则您需要使用其他表的路径或重新设计数据库。如果你有那个外键,那就是你在IN运算符周围使用的那个:

select fld_cust_id from test1 where fld_cust_id in (select id from tbl_customer cu where cu.fld_status=1);

答案 2 :(得分:0)

不确定你的tbl_customer中有什么,但似乎你将fld_order_id与*匹配。您应该与客户表中的order_id匹配。

select cu.fld_cust_id,ord.* 
from test1 
where fld_order_id ord in (
  select *ORDERID* from tbl_customer cu where cu.fld_status=1
);