0

我在管理这样的查询时遇到了困难:

SELECT c.id, p.id FROM claim c, procedure p LIMIT 1;

此查询将返回以下集合:

 id | id
----+----
 49 |  1

有没有办法让它返回c.idp.id列名?这个不行:

SELECT c.id as c.id, p.id as c.id FROM claim c, procedure p LIMIT 1;

或者这是我的最终解决方案?

SELECT c.id as c_id, p.id as p_id FROM claim c, procedure p LIMIT 1;
4

3 回答 3

3
SELECT c.id AS "c.id", p.id AS "p.id" FROM claim c, procedure p LIMIT 1;

或者简单地说:

SELECT c.id "c.id", p.id "p.id" FROM claim c, procedure p LIMIT 1;
于 2013-09-14T15:53:28.293 回答
2

使用适当的命名约定,您一开始就很少需要处理这个问题。

我建议改用这样的东西:

CREATE TABLE claim (claim_id serial PRIMARY KEY, ...);

CREATE TABLE procedure (procedure_id serial PRIMARY KEY, ...);

"id"对于列名来说是一个非常糟糕的选择。不幸的是,一些半机智的 ORM 使用这种反模式。尽可能避免它。

相关:将 UNNEST 与 JOIN 结合使用
并检索单个结果

于 2013-09-14T16:19:16.467 回答
1

我认为这里缺少的最后一个答案是更正确的方法是使用括号 []

SELECT c.id AS [c.id], p.id AS [p.id]
FROM claim c, procedure p LIMIT 1;
于 2020-05-27T11:27:53.067 回答