在MySQL中使用不同的视图从搜索和导出中获取相同的数据?

在MySQL中使用不同的视图从搜索和导出中获取相同的数据?,mysql,views,Mysql,Views,我在一个数据库中有两个表。一个表是主表,另一个表是子表。当用户执行搜索时,他们只查询主表中的记录,然后单击加号时,它将搜索子记录。查询如下所示: SELECT * FROM TableA GROUP BY id LIMIT 0,10; SELECT * FROM TableC ORDER BY aid LIMIT 0,10; 如果用户在中选择了适用于子表的搜索条件,则仅对子表(TableB)进行内部联接,例如: SELECT * FROM TableA a INNER JOIN TableB

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

SELECT * FROM TableA
GROUP BY id
LIMIT 0,10;
SELECT *
FROM TableC
ORDER BY aid
LIMIT 0,10;
如果用户在中选择了适用于子表的搜索条件,则仅对子表(TableB)进行内部联接,例如:

SELECT * FROM TableA a
INNER JOIN TableB b on b.MasterId = a.id
GROUP BY a.id 
LIMIT 0, 10;
以上所有操作都很好,除了当我必须导出时,当用户导出时,它使用不同的数据视图,没有主级和子级,这是一个平坦的结果,因此,例如,当我对搜索进行限制0,10时,它会返回10条主记录,但如果我有1条主记录和10条子记录,导出将只带回包含主信息和子信息的10条记录,但它将只是搜索中的第一条主记录,甚至可能不是同一条记录,因为我正在查询视图。导出的查询可能是:

SELECT * FROM TableC
LIMIT 0,10;
table C
基本上是从
table a
table B
中展开的数据的视图,但由于它是展开的,应用
限制
,无法正确应用


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

当您使用
限制时,您应该包括一个
订购人。MySQL保证在
分组之后进行排序。那么,试试这样的方法:

SELECT * FROM TableA
GROUP BY id
LIMIT 0,10;
SELECT *
FROM TableC
ORDER BY aid
LIMIT 0,10;
需要注意的是:这在MySQL中是有效的,因为可以保证在
分组之后进行排序。这不是ANSI标准,不适用于其他数据库