繁体   English   中英

如果未达到限制,是否可以使用单个MySQL查询选择不同的行,然后选择非不同的行?

[英]Can I use a single MySQL query to select distinct rows and then non-distinct rows if a limit hasn't been reached?

我希望我能正确解释这一点,我对MySQL的了解非常有限。

假设我有一个表,其中的行具有一个名为shape的字段。

我想从表中选择一堆行,但首先返回具有唯一形状字段值的所有行。 如果我的行数少于一定数量(例如7),那么我想用非唯一形状的行填充其余结果行。 我可以说的最好的方法是,它们“按唯一性排序,然后按其他一些值排序”。

所以,我不要: 正方形正方形圆形圆形矩形正方形三角形

我想要拥有: 正方形圆形矩形三角形正方形正方形圆形

使用单个SQL查询可以做到吗? 我将MySQL与PHP结合使用,如果有什么不同的话。

谢谢!

您可以先与非唯一查询结合使用,然后从不同值的组合中选择数量有限的行(您也可以限制要检索的最大行数)。

即。 从中选择field1,field2,...(从...中选择不同的field1,field2,...从... UNION中选择field1,field2,...从... LIMIT MAX_ROW_COUNT)作为总计LIMIT MAX_ROW_COUNT

您可能可以使用UNION来执行此操作(即,使用两个不同的查询,但仅合并结果即可)

您可以使用UNION ALL合并2个不同(但相同的选择)查询。 但是我认为LIMIT在UNION上不起作用,那么您必须:

SELECT此处的唯一查询,限制为0.7 UNION ALL SELECT此处的其他查询,限制为0.7

当它们都具有相同的SELECT值时,它们将合并为1个结果,然后您可以简单地在7之后切断所有行。

但是也许您已经可以对整个UNION进行LIMIT了,我不知道。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM