首页 > 解决方案 > 连接时的 SQLite 相同的列名

问题描述

在android studio上使用sqlite,我有两个相关的表“A”和“B”,它们都有一个“id”列。当我在 Android Studio 上加入并尝试从“id”获取值时,无论我是否输入,我都会得到“B.id”

cursor.getInt(cursor.getColumnIndex("A.id")); // or
cursor.getInt(cursor.getColumnIndex("id"));

我正在考虑更改列的名称,以便我可以轻松区分它们,但我已经看到 sqlite 没有任何简单的东西,如“Alter Table“A”rename column”,但我必须复制表使用正确的名称并删除旧名称,因此我试图避免使用此解决方案。

我认为还有一个解决方案是在查询中复制列,放置类似“Select A.id, * from ...”的内容,但这是我宁愿避免的。

知道为什么我发布的代码可能不起作用吗?谢谢

标签: androidsqliteandroid-sqlite

解决方案


在列上定义别名,可选择使用 选择所有其他列*。这些不是相互排斥的,因此以下将起作用:

SELECT a.id AS a_id, b.id AS b_id, * FROM ...

它将返回别名列以及所有其他列,即使数据是冗余的:

Columns: a_id, b_id, id, ..., id, ...

坦率地说,你不能避免所有的解决方案。您已经列出的两个解决方案是您必须选择的所有解决方案。Sqlite 不会自动为列名添加表名前缀,因此真的没有其他选择。


推荐阅读