2011-04-19 76 views
2

当在SQLite中查询数据库时,我发现给我正在使用的表提供别名很有用。它还有助于解决命名冲突。没有表名的SQLite列名

SELECT a._id, a.name, b.email FROM people AS a, emails AS b 

但是后来当我寻找列“_id”,“名”,并在我的光标“电子邮件”,我得到了列不能发现错误。它只适用于如果我将查询更改为:

SELECT a._id AS "_id", a.name AS "name", b.email AS "email" FROM people AS a, emails AS b 

有没有办法在没有额外工作的情况下获取基列名称?

+0

尝试转储从数据库接收的对象。 – hsz 2011-04-19 12:55:30

+0

什么类型的光标?既然你没有显示任何关于游标的代码,猜测答案有点棘手。 – 2011-04-19 12:55:32

+0

你的主题不应该是“没有**表**名称”吗? (而不是*数据库*名称) – 2011-04-19 12:57:01

回答

0

从我读过的看来,这似乎是一个SQLite特定的问题。

SQLite不(目前)作出有关
查询中省略了AS子句列名的任何 承诺。如果您使用AS子句 ,那么
列名称保证为AS右侧的 标签。如果
省略了AS子句,那么列名称 的名称可能会从SQLite的一个发行版 更改为下一个。

- http://old.nabble.com/Aliasing-and-columns-names-td18382558.html

我只会使用上有冲突列的表别名建议。例如,在上面的示例中,如果_id是唯一存在冲突的列:

SELECT a._id AS _id, name, email FROM people AS a, emails 
2

向列声明别名是避免错误的更好方法。这两个表格中的查询可能具有相同的列名,并且很难区分它们而没有别名。区分它们的唯一方法是将它们与表名关联或给它们别名。

别名可以使查询更易于写入和读取。您可以使用别名为表或列指定另一个名称。如果你有很长或者很复杂的表名或列名,这可能是一件好事情。

相关问题