3

是否有关于 Sqlite3 的文档/规范可以描述在以下情况下应该发生的情况?

接受这个查询:

var cmd = new SqliteCommand("SELECT Items.*, Files.* FROM Items LEFT JOIN Files ON Files.strColName = Items.strColName");

两者Items都有Files一个列名“ strColName ”。如果 中存在条目Files,则将其连接到结果中,如果不存在,则为 NULL。假设我总是需要strColName的值,无论它是来自Items还是来自Files。如果我执行阅读器:

var reader = cmd.ExecuteReader();

如果 , 中有匹配项Filesreader["strColName"]显然会包含正确的结果,因为该值已设置并且在两个表中都是相同的。但是如果 中没有匹配Files项, NULL 值是否会Files覆盖 的非 NULL 值Items

我真的在寻找一些规范来定义 Sqlite3 实现必须如何处理这种情况,以便我可以信任任何一个结果。

4

1 回答 1

1

SQLite 返回多个标有相同名称的列没有问题。SELECT但是,列将始终以与它们在语句中写入的顺序完全相同的顺序返回。因此,当您搜索 时"strColName",您会找到第一个,来自Items

建议使用显式列名而不是*这样,以便顺序清晰,并且您可以根据需要通过列索引访问值(并且您检测到表结构中的不兼容更改)。

于 2012-12-29T15:02:26.000 回答