我正在使用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;
使用子查询。 不能在定义列别名的同一级别中引用列别名:
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 ;
如果已在HUB_DATABASE
中定义IDRef
,则会收到错误。 如果是这样,则需要使用其他名称或从子查询中删除该列。