[英]Select current table name from postgresql
我有一个由多个子查询组成的查询,这些子查询由UNION ALL
组合而成。
SELECT pan_hash, amount FROM humo_txns
UNION ALL
SELECT pan_hash, amount FROM uzcard_txns
LIMIT 10;
但是在检索数据之后,我需要以某种方式找出数据的来源,所以我认为最好将表名(数据的来源)作为一个新列包含在内。
那么有什么办法可以完成这样的事情吗?
SELECT <table_name>, pan_hash, amount FROM humo_txns
UNION ALL
SELECT <table_name>, pan_hash, amount FROM uzcard_txns
LIMIT 10;
您可以尝试以下 -
SELECT 'humo_txns', pan_hash, amount FROM humo_txns
UNION ALL
SELECT 'uzcard_txns', pan_hash, amount FROM uzcard_txns
LIMIT 10;
没有内置的 function 可以执行此操作,您必须在每个 select 中手动输入名称
SELECT CAST('humo_txns' AS VARCHAR(64)) AS table_name, pan_hash, amount FROM humo_txns
UNION ALL
SELECT CAST('uzcard_txns' AS VARCHAR(64)) AS table_name, pan_hash, amount FROM uzcard_txns
我建议至少在第一个查询中转换为一个 varchar 字段,该字段的长度足以容纳任何表名。
是的,只需 select 文本文字并为此使用一些列别名:
SELECT 'humo_txns' AS table_name, pan_hash, amount FROM humo_txns
UNION ALL
SELECT 'uzcard_txns' AS table_name, pan_hash, amount FROM uzcard_txns
LIMIT 10;
(这为您提供了从表中所有行中任意选择的十行,就像在您的查询中一样。因此您可以从两个表中获取行或仅从一个表中获取行。)
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.