选择*,其中不同表格中的列与原始表格列

时间:2015-08-29 06:38:37

标签: sql hsqldb

这些是我的表(有一些记录):

Product:
ID PRICE NAME    DESCRIPTION
1  100   laptop  laptop_desc
2  200   mouse   mouse_desc
3  300   伊吾    伊吾伊吾

Product_Translations:
PID  LANG NAME DESCRIPTION
1    ch   伊吾  伊吾伊吾

使用以下查询我可以加入2个表:

SELECT p.id,p.price,
      COALESCE(pt.Name, p.Name) Name, 
      COALESCE(pt.Description, p.Description) Description
FROM Product p
LEFT JOIN Product_T pt 
ON pt.PID = p.ID 
AND pt.LANG = 'ch'   
WHERE (UPPER(p.name) LIKE UPPER('%伊吾%') OR UPPER(pt.name) LIKE UPPER('%伊吾%'))

现在我的问题是,在上面的查询中我需要明确地提到select查询中的每一列(比如p.id,p.price;真正的表有更多的列),我不想这样做。在我的情况下,我需要一直得到所有列,即select *。但是如果在查询中给出p.*,则名称和描述列将是预期的两倍(来自Product和Product_T表)。那么有什么方法我仍然可以给p。*并获得合并的名称和描述列?

感谢您的帮助。

1 个答案:

答案 0 :(得分:1)

您可以查询架构以查找表上的列,然后从中动态构建select语句。 (例如,如果两个表中都出现一个具有相同名称的列,则只从其中一个表中选择它。)

有关如何在hsqldb中查询架构的信息,请参阅http://hsqldb.org/doc/2.0/guide/databaseobjects-chapt.html#dbc_information_schema