没有表名的SQLite列名

时间:2011-04-19 12:50:42

标签: database sqlite

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

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

然而,当我在光标中查找“_id”,“name”和“email”列时,出现无法找到列的错误。它仅在我将查询更改为:

时才有效
SELECT a._id AS "_id", a.name AS "name", b.email AS "email" FROM people AS a, emails AS b

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

2 个答案:

答案 0 :(得分:2)

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

别名可以使查询更容易编写和读取。您可以使用别名为表或列指定其他名称。如果您有非常长或复杂的表名或列名

,这可能是一件好事

答案 1 :(得分: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