【发布时间】:2014-02-27 14:45:07
【问题描述】:
数据结构如下:
ID | Name | CID
---------------------------------
1 | x |
2 | a | 12
3 | a | 12
4 | c |
5 | x |
6 | [ |
当我执行普通查询时
SELECT DISTINCT Name FROM table WHERE ISNull(CID_ID) ORDER BY Name; [1]
SELECT DISTINCT Name FROM table ORDER BY Name; [2]
我在 MySQL CLI 中得到了 [1] 的预期结果:
| Name
------------
| c
| x
| [
对于查询 [2]:
| Name
------------
| a
| c
| x
| [
所以我的问题是:当我打开记录集并将其绑定到字段列表时,项目的顺序混乱了。具体来说,括号值为“[”的数据集放在MS-Access表单中字段列表的顶部,但仅在我执行查询时[1]。
我得到不是 [1] 的预期结果:
| Name
------------
| [
| c
| x
对于查询 [2]:
| Name
------------
| a
| c
| x
| [
简化的 VBA 代码 sn-p 如下所示:
Dim dbs As DAO.Database
Dim rsSQL As DAO.Recordset
Dim strSQL As String
Set dbs = CurrentDb
strSQL = "SELECT DISTINCT Name FROM table WHERE ISNull(CID_ID) ORDER BY Name;"
Set rsSQL = dbs.OpenRecordset(strSQL, dbOpenSnapshot)
捕获记录集后,我会覆盖列表的记录集:
Set Me.ListNames.Recordset = oiManager.LoadDistinctName()
附加信息(1):
服务器版本:5.6.16 MySQL 社区服务器 (GPL)
附加信息(2):
| Name | Engine | Version | Collation
| ########## | InnoDB | 10 | utf8_general_ci
附加信息(3): 所以我在访问中创建了两个单独的查询并启动了它们。在数据表视图中,我得到“交换结果”:对于查询 [1],它在顶部,对于查询 [2],括号在底部。这是一个带有 ODBC 连接的链接 MySQL 表。我玩弄了一些表格属性,但没有任何效果。
然后我在 access 本身中创建了一个虚拟表,用一些值填充表,结果是一致的:两次都显示在顶部。所以在我看来,不一致必须基于我正在使用链接的 MySQL 表这一事实。
我正在使用:
- Microsoft Access 2013 (9.0.24172.951362)
- ODBC 驱动程序 32 位,MySQL ODBC 5.2 Unicode 驱动程序
【问题讨论】:
-
你用的是什么数据库,mysql还是access?
-
更新:见帖子底部。
-
您的示例输出显示两个 Access 查询在将
[排序到顶部/底部时不一致。真的是这样吗? (我在测试中没有看到。)另外,MySQL 表的排序规则设置是什么? -
是的,这是排序顺序不一致,我无法解决。有关更多信息,请查看更新版本。谢谢你!
-
好的,请检查一下,因为当我从 Access 中运行这两个查询时,
[始终出现在顶部(即,对于 both 查询 [1] 和查询[2])。如果您也是这种情况,那么请编辑您问题中的示例结果以反映这一点。 (MySQL 和 Access 之间的行为差异是一回事,而 Access 的 inconsistent 行为是不同的。)