我在数据库中有两个表。一个表是主表,另一个表是子表。当用户进行搜索时,他们仅查询主表中的记录,然后单击加号时,它会搜索子记录。查询是这样的:
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
基本上是来自TableA
和TableB
的展平数据的视图,但由于它被展平,因此应用LIMIT
并不适用。
有没有办法解决这个问题?任何解决方案?
答案 0 :(得分:0)
使用limit
时,您应该添加order by
。 MySQL保证group by
之后的排序。所以,尝试这样的事情:
SELECT *
FROM TableC
ORDER BY aid
LIMIT 0,10;
作为注释:这在MySQL中有效,因为group by
之后的排序保证。这不是ANSI标准,不适用于其他数据库。