久久r热视频,国产午夜精品一区二区三区视频,亚洲精品自拍偷拍,欧美日韩精品二区

您的位置:首頁技術文章
文章詳情頁

mysql - 有張訂單表,假設有個2個手機號,每個手機號都有5個訂單,如何用一個sql實現每個手機號隨機取3個訂單?

瀏覽:139日期:2022-06-22 08:31:46

問題描述

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關鍵字。

問題解答

回答1:

(SELECT `order_id` FROM `order` WHERE `phone`=’$phone1’ LIMIT 3 ORDER BY rand())UNION ALL(SELECT `order_id` FROM `order` WHERE `phone`=’$phone2’ LIMIT 3 ORDER BY rand())

只用SQL完成的話,這樣最簡單,但是 ORDER BY rand() 性能很差。最好就是拿出一定數量的記錄,然后在程序中隨機再選擇三條。

主站蜘蛛池模板: 兰考县| 泸西县| 广西| 莎车县| 六安市| 崇文区| 绍兴市| 丰原市| 元江| 达尔| 舞钢市| 岱山县| 沛县| 昭平县| 常熟市| 秭归县| 斗六市| 莒南县| 湖北省| 海阳市| 桃园市| 百色市| 安溪县| 昭通市| 禄劝| 兴安县| 栾川县| 界首市| 高密市| 松滋市| 洞口县| 吕梁市| 平和县| 普兰县| 南陵县| 天峨县| 威信县| 澳门| 镇巴县| 延安市| 金沙县|