CREATE TABLE `order` (
`order_id` int(11) NOT NULL AUTO_INCREMENT,
`phone` bigint(20) NOT NULL DEFAULT '0' COMMENT '手机号',
PRIMARY KEY (`order_id`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8;
有什么可以不用union all的方法吗,因为这个是我简化的模型,实际业务中,这个phone的数量可能很多。
SELECT
phone,
GROUP_CONCAT(order_id ORDER BY rand())
FROM
`order`
WHERE
phone IN (11, 22)
GROUP BY
phone
上面这个方法还是取出了所有数据,GROUP_CONCAT函数不支持limit关键字。
只用SQL完成的话,这样最简单,但是 ORDER BY rand() 性能很差。最好就是拿出一定数量的记录,然后在程序中随机再选择三条。