我选择从1和表1个字段并将其存储到一个临时表。

有时,表0行结束。

欲该字段添加到具有20+字段另一个表

正工会不会为我工作,因为该领域#不匹配。 外不会为我工作,因为没有什么比较。 NVL不会对第一临时表工作。

任何人都知道该怎么办呢?

<强>更新:

我没有提到....当检索1个字段中的表,发现在其他情况下匹配,这个代码,我使用现在工程....

SELECT DISTINCT reqhead_rec.resp_name<br>
FROM reqhead_rec, biglist<br>
WHERE reqhead_rec.req_no = biglist.req_no
 AND reqhead_rec.frm = biglist.req_frm<br>
INTO TEMP grabname with no log;

SELECT biglist.*, grabname.resp_name<br>
FROM biglist, grabname<br>
ORDER BY prnt_item, account_amt<br>
INTO TEMP xxx with no log;
有帮助吗?

解决方案

什么字段将它与匹配吗?顺便说一句,这里是如何将它们排队:

SELECT NULL, NULL, NULL, NULL, MySingleField, NULL, NULL, NULL... FROM #temp
UNION ALL
SELECT Col1, Col2, Col3, Col4, Col5, Col6,... FROM OtherTable

更新:

OK,阅读你的更新后......我不认为你想有一个UNION可言,而是和非常简单的子查询

SELECT
    *,
    (SELECT TOP 1 Name FROM Blah WHERE Blah.SomeID = MyTable.SomeID) AS ExtraCol
FROM
    MyTable

其他提示

这听起来像你想的联接,不是工会。

您不需要任何比较做加盟。你结束了一个跨产品,如果你没有指定连接条件:

SELECT t20.*, t1.*
FROM table_with_20_columns AS t20
  LEFT OUTER JOIN temp_table_with_1_column AS t1 ON (1=1);

当有零行的临时表,它会被报告为在上面的查询的结果NULL。

然而,如果在临时表中多行,你会得到的第一个表的叉积。我无法从你的问题告诉你想要的东西。

修改的连接条件的ONUSING子句中表示应根据SQL标准是可选的,但至少为我在MySQL 5.0测试它,这是一个语法错误省略该条款。但是你可以使用ON (1=1)

编辑:回答你的问题在注释:

SELECT COALESCE(reqhead_rec.resp_name, dflt.resp_name) AS resp_name
FROM (SELECT 'default name' AS resp_name) dflt
  LEFT OUTER JOIN reqhead_rec ON (1=1)
WHERE reqhead_rec.req_no = biglist.req_no AND reqhead_rec.frm = biglist.req_frm 
INTO TEMP grabname WITH NO LOG;

实际上,则可以完全跳过临时表。只是LEFT JOIN您的主表reahead_rec。把这些条件进入的加入ON条款,而不是在WHERE条款。然后使用COALESCE()在查询的选择列表给一个默认名称时,在其他表中没有找到一个。

SELECT b.*, COALESCE(r.resp_name, 'default name') AS resp_name
FROM biglist AS b
  LEFT OUTER JOIN reqhead_rec AS r
    ON (b.req_no = r.req_no AND r.frm = b.req_frm)
INTO TEMP xxx WITH NO LOG;

尝试缺失值选择nvl(NULL,NULL)

许可以下: CC-BY-SA归因
不隶属于 StackOverflow
scroll top