我正在运行以下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。事实上,在我试过的所有其他数据库中,这正是它们的名称?
任何想法为什么?
答案 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发布到下一个。