[英]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.