1

我写了一个 SP 来检索结果集。因此,以下 SQL 部分将为我提供我想要的结果集:

SELECT *
FROM `temp_table` JOIN `mytable` ON `mytable_ID` = `temp_table_tmp_id`
WHERE CEILING(`tmp_idx`/int_page_size) = p_page_no

现在,我需要在上述结果集中添加一个动态行,因此,我尝试了以下方法:

SELECT *
FROM `temp_table` JOIN `mytable` ON `mytable_ID` = `temp_table_tmp_id`
WHERE CEILING(`tmp_idx`/int_page_size) = p_page_no
UNION ALL
SELECT DISTINCT `ID`, `temp_table_tmp_id`,`Name`, 100, `Type`,`Description`
ORDER BY `tmp_idx`; 

但是,对于我在“UNION ALL”之后的 SELECT 语句中定义的每个字段,这都会产生“'字段列表'中的未知列 'tmp_idx'”错误。我已将“100”作为应在结果集中指示的值。我希望这对我想要实现的目标足够清楚。请让我知道如何纠正/实现这一点?

提前致谢。

4

1 回答 1

0

尝试使用撇号(即')而不是反引号(`)来分隔动态行中的列标题。此外,您必须将所有数字列转换为基本查询中的格式化字符串。

要控制顺序,以便强制人工行出现在最后,请添加另一列sequence,其硬编码值为 0 用于数据行,硬编码值为 1 用于动态行。然后在 ORDER BY 的前面添加这个新列sequence。(在某些 SQL 方言中,需要通过序号而不是名称来标识此列,或者添加包含 order by 子句的包装查询。)

于 2013-04-13T07:35:18.027 回答