0

我在数据库中有两个表。一个表是主表,另一个表是子表。当用户进行搜索时,他们只查询主表中的记录,然后单击加号时,它会搜索子记录。查询是这样的:

SELECT * FROM TableA
GROUP BY id
LIMIT 0,10;

如果用户选择适用于子表的搜索条件,我只对子表 (TableB) 进行内部连接,例如:

SELECT * FROM TableA a
INNER JOIN TableB b on b.MasterId = a.id
GROUP BY a.id 
LIMIT 0, 10;

以上所有工作都很好,除了当我必须导出时,当用户导出时,它使用不同的数据视图,没有主子级别,这是一个扁平的结果,例如,当我做一个 LIMIT 0,10 搜索,带回 10 条主记录,但是如果我有 1 条主记录和 10 条子记录,导出只会带回 10 条同时包含主信息和子信息的记录,但它只会是第一个来自搜索的主记录,它甚至可能不是相同的记录,因为我正在查询视图。导出查询可能是:

SELECT * FROM TableC
LIMIT 0,10;

TableC基本上是来自TableAand的展平数据的视图TableB,但是因为它是展平的,所以应用 a LIMIT, 不能正确应用。

有没有办法解决这个问题?有什么解决办法吗?

4

1 回答 1

0

当你使用时,limit你应该包括一个order by. MySQL 保证group by. 所以,试试这样的事情:

SELECT *
FROM TableC
ORDER BY aid
LIMIT 0,10;

注意:这在 MySQL 中有效,因为group by. 这不是 ANSI 标准,不适用于其他数据库。

于 2013-09-13T13:36:24.510 回答