Netezza SQL 搜索串联值的查询
Netezza SQL query searching a concatenated value
我正在使用 Aginity workbench 查询 netezza 数据库并尝试创建简单的查询。基本上,在 table 中有两列我想合并以创建一个 ID(它们确实构成了实际唯一 ID 的两部分)。在查询中我想搜索唯一的 ID,例如IDRef 值。所以在下面的例子中,我想 return table 中的所有行,其中 X 列等于 282,Z 列等于 55。下面的代码没有 returning 任何东西。
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 ;
如果 IDRef
已经在 HUB_DATABASE
中定义,您将得到一个错误。如果是这样,您需要使用不同的名称或从子查询中删除该列。
我正在使用 Aginity workbench 查询 netezza 数据库并尝试创建简单的查询。基本上,在 table 中有两列我想合并以创建一个 ID(它们确实构成了实际唯一 ID 的两部分)。在查询中我想搜索唯一的 ID,例如IDRef 值。所以在下面的例子中,我想 return table 中的所有行,其中 X 列等于 282,Z 列等于 55。下面的代码没有 returning 任何东西。
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 ;
如果 IDRef
已经在 HUB_DATABASE
中定义,您将得到一个错误。如果是这样,您需要使用不同的名称或从子查询中删除该列。