12

我在规范化的 sqlite 数据库上有一个相当复杂的查询(多个连接)。查询会SELECT *启用一些自动属性选择逻辑(所以我不能消除“*”)

我遇到的问题是我的结果集包含多个具有相同属性名称的列。例如,查询中每个表共有的一个属性是“_id”。当我去调用"cursor.getColumnIndex("_id")"返回的值总是"_id"结果集列列表中最后一个属性的索引(即不是我想要的那个)。我希望能够使用我的 SQL 别名前缀, cursor.getColumnIndex("A._id")但那不起作用。

问题

  • 似乎cursor.getColumnIndex(AttributeName)返回最后一个“AttributeName”的索引。谁能证实这一点?
  • 另外,关于如何用“AttributeName”返回第一个属性的索引有什么建议吗?或者更好的是具有“AttributeName”的第 X 个属性?
4

3 回答 3

8

你可以这样做:

SELECT _id as myID, * FROM myTable

这意味着该_id字段将在您的结果中为每个表出现两次,但两列中的一列将具有唯一的名称,您应该能够找到它。

于 2011-11-01T13:34:42.117 回答
1

不幸的是,文档没有提及您需要做什么,所以我假设它无法完成。

然而,你说

该查询执行 SELECT * 以启用一些自动属性选择逻辑(所以我不能消除“*”)

您所说的“自动属性选择逻辑”是什么?你为什么需要这个?

于 2011-10-31T22:07:50.937 回答
-3

一个奥德解决方案是:

"SELECT tableName.columnName FROM tableName"

然后做同样的事情:

cursor.getColumnIndex("tableName.columnName");

这就是 MS-Access 所做的。您可以创建查询,然后查看生成的 SQL 代码(只需转到“查看”菜单并从查询设计窗口中选择“SQL 视图”)

于 2013-02-14T02:53:58.670 回答