SQLite以不同于预期的列命名列

时间:2014-08-05 05:34:03

标签: sql sqlite subquery

我正在运行以下SQL语句

SELECT [i].[ByteColumn], [r].[ReferenceDate] 
FROM [Reference] [r] INNER JOIN (
SELECT  [Import].[ImportID], [Import].[ByteColumn] 
FROM [Import]) AS i  
ON ([r].[ImportID] = [i].[ImportID])
ORDER BY [i].[ByteColumn] ASC

数据按预期返回,但列名是i和r?我希望它们是ByteColumn和ReferenceDate。事实上,在我试过的所有其他数据库中,这正是它们的名称?

任何想法为什么?

1 个答案:

答案 0 :(得分:1)

您需要为要选择的列及其完成的列提供别名。试试这个:

SELECT [i].[ByteColumn] as [ByteColumn], [r].[ReferenceDate] as [ReferenceDate]
FROM [Reference] [r] INNER JOIN (
SELECT  [Import].[ImportID], [Import].[ByteColumn] 
FROM [Import]) AS i  
ON ([r].[ImportID] = [i].[ImportID])
ORDER BY [i].[ByteColumn] ASC

来自doc:

  

SQLite(目前)没有对列名作出任何承诺   省略AS子句的查询。如果你使用AS子句,那么   列名保证是AS右侧的标签。如果你   省略AS子句,然后列名可能会从一个更改   将SQLite发布到下一个。