SELECT
ID, PRIM_EMAIL, SEC_EMAIL, PHONE
FROM
STUDENTS.RECORDS
WHERE
ID IN (SELECT ID FROM STUDENTS.INFO WHERE ROLL_NO = '554')
UNION
SELECT NAME
FROM STUDENTS.INFO
WHERE ROLL_NO = '554';
在这里 Roll_No
是一个用户插入的数据,所以现在我已经硬编码了。基本上是在 ROLL_NO
我把它们分类 STUDENTS_INFO
我从那里得到的table ID
基于此,我试图 PRIM_EMAIL
, SEC_EMAIL
, PHONE
从 STUDENTS.RECORDS
同时匹配两个表的外键。除了当前的结果集,我还想有prov\u name列。
非常感谢您的帮助。谢谢您!
2条答案
按热度按时间xdyibdwo1#
我怀疑你想把所有这些信息放在同一行,这意味着
join
而不是union all
:xlpyo6sf2#
我认为你错误的根源
query block has incorrect number of result columns
来自于试图将一个包含4列的表合并在一起(id, prim_email, sec_email, phone
)带1列(name
).从你的问题来看,我想知道你想要一张table
id, prim_email, sec_email, phone
从students.records
以及name
从students.info
.我认为下面使用cte的查询可能会(部分)得到最终结果。您可能需要重构以优化性能。
总的来说,我认为
join
将是你解决方案的一部分而不是union
:-)