如何选择内部查询结果作为输出

问题描述 投票:0回答:2

如何获取内部查询字段作为select语句的输出。这里需要通过select语句返回users表中的lang。是否有可能使用相同的查询

SELECT ID, LANG  -- THIS LANG IS NOT WORKING
  INTO V_TRAVEL_ID, V_LANG
  FROM TRAVEL_TABLE
 WHERE USER_ID = (SELECT MYID,
                         LANG -- THIS LANG FIELD IS NEEDED ON MY
                           SELECT QUERIES RESULT
                             FROM USERS
                            WHERE CONTACT_ID = V_CONTACT_ID                                                  
                  );
sql oracle subquery inner-join
2个回答
0
投票

您的查询措辞方式允许您过滤每个用户联系人的旅行,但您无法访问相关用户的详细信息 - 因为主查询仅从旅行表中选择。

可能你想要一个

join
;这使您可以过滤数据集and使两个表的列可用于
select

SELECT t.id, u.lang
INTO v_travel_id, v_lang
FROM travel_table t
INNER JOIN users u ON u.id = t.user_id
WHERE u.contact_id = v_contact_id

0
投票

如果

users
表将匹配单行,则:

SELECT t.ID,
       u.LANG
INTO   V_TRAVEL_ID, V_LANG
FROM   TRAVEL_TABLE t
       INNER JOIN USERS u
       ON u.MYID = t.USER_ID
WHERE  CONTACT_ID = V_CONTACT_ID;

如果用户表可以匹配多行,那么您可以使用

LATERAL
连接并仅获得第一个匹配项:

SELECT t.ID,
       u.LANG
INTO   V_TRAVEL_ID, V_LANG
FROM   TRAVEL_TABLE t
       CROSS JOIN LATERAL (
         SELECT LANG
         FROM   USERS
         WHERE  CONTACT_ID = V_CONTACT_ID                                                 
         AND    MYID       = t.USER_ID
         -- ORDER BY something
         FETCH FIRST ROW ONLY
       ) u;
© www.soinside.com 2019 - 2024. All rights reserved.