0

我正在使用 Aginity 工作台来查询 netezza 数据库并尝试创建简单的查询。基本上,在一个表中,我想将两列组合起来创建一个 ID(它们确实构成了实际唯一 ID 的两个部分)。在查询中,我想搜索唯一 ID,例如 IDRef 值。因此,在下面的示例中,我想返回表中 X 列等于 282 且 Z 列等于 55 的所有行。下面的代码不返回任何内容。

SELECT T_ROUTE || CSC as IDRef, *
FROM HUB_DATABASE 
WHERE POSTCODE like 'A%'
AND CURRENT_RECORD_FLAG = '1'
AND IDRef = 28255
LIMIT 100 
;

因此,下面的代码以相同的方式工作正常,但只是尝试使用更智能的方法来执行此操作,当然还可以加深我的 sql 知识。

SELECT * FROM HUB_DATABASE
WHERE T_ROUTE = '282'
AND CSC = '55'
AND POSTCODE like 'A%'
AND CURRENT_RECORD_FLAG = 1
LIMIT 100;
4

1 回答 1

0

使用子查询。您不能在定义它的同一级别引用列别名:

SELECT hb.*
FROM (SELECT T_ROUTE || CSC as IDRef, hd.*
      FROM HUB_DATABASE hd
      WHERE POSTCODE like 'A%' AND
            CURRENT_RECORD_FLAG = '1'
     ) hb
WHERE IDRef = 28255
LIMIT 100 ;

如果IDRef已经在HUB_DATABASE. 如果是这样,您需要使用不同的名称或从子查询中删除该列。

于 2017-08-18T15:36:12.937 回答