gpt4 book ai didi

mysql - 在选择结果之间随机添加记录

转载 作者:行者123 更新时间:2023-11-29 23:05:42 26 4
gpt4 key购买 nike

我想在选择结果中随机添加记录,如下例所示:

1 a
2 a
- b
3 a
- b
4 a
5 a
6 a
- b
7 a
8 a
- b

在一个简单的查询中,我从一个表中进行选择,但在这种情况下,我希望结果与 b 表混合,而不是随机结果,否则我只需将它们联合起来,然后排序 random()。

编辑:

-- ----------------------------
-- Table structure for t1
-- ----------------------------
DROP TABLE IF EXISTS `t1`;
CREATE TABLE `t1` (
`ID` int(11) NOT NULL AUTO_INCREMENT,
`name` varchar(255) DEFAULT NULL,
PRIMARY KEY (`ID`)
) ENGINE=InnoDB AUTO_INCREMENT=11 DEFAULT CHARSET=utf8;


INSERT INTO `t1` VALUES ('1', 'a');
INSERT INTO `t1` VALUES ('2', 'a');
INSERT INTO `t1` VALUES ('3', 'a');
INSERT INTO `t1` VALUES ('4', 'a');
INSERT INTO `t1` VALUES ('5', 'a');
INSERT INTO `t1` VALUES ('6', 'a');
INSERT INTO `t1` VALUES ('7', 'a');
INSERT INTO `t1` VALUES ('8', 'a');
INSERT INTO `t1` VALUES ('9', 'a');
INSERT INTO `t1` VALUES ('10', 'a');

-- ----------------------------
-- Table structure for t2
-- ----------------------------
DROP TABLE IF EXISTS `t2`;
CREATE TABLE `t2` (
`ID` int(11) NOT NULL AUTO_INCREMENT,
`name` varchar(255) DEFAULT NULL,
PRIMARY KEY (`ID`)
) ENGINE=InnoDB AUTO_INCREMENT=4 DEFAULT CHARSET=utf8;

INSERT INTO `t2` VALUES ('1', 'b');
INSERT INTO `t2` VALUES ('2', 'b');
INSERT INTO `t2` VALUES ('3', 'b');

所以我可以合并两个表,然后随机排序,结果将是这样的:

SELECT
t1.ID,
t1.name
FROM
t1
UNION ALL
SELECT
t2.ID,
t2.name
FROM
t2
ORDER BY RAND();


5 a
2 a
6 a
3 a
7 a
2 b
9 a
1 a
10 a
3 b
4 a
8 a
1 b

但我不想随机记录,我只想混合两个表记录,如第一个示例。我希望我的问题现在已经清楚了。

最佳答案

我不认为纯SQL是最好的解决方案,我会在一些最终框架(我不知道你使用什么)中完成它,比如PHP,Delphi,Java等。这种方式更容易你可以更好地控制它。但如果您想在 SQL 中执行此操作,这里有一个想法:

SET @max_t1 = (SELECT MAX(ID) FROM t1);
SET @max_t2 = (SELECT MAX(ID) FROM t2);

SET @last_order = RAND()*@max_t1/@max_t2;

SELECT
t1.ID, t1.name, t1.ID AS "Ord"
FROM
t1

UNION ALL
SELECT
t2.ID, t2.name, @last_order:=@last_order+RAND()*@max_t1/@max_t2
FROM
t2
ORDER BY Ord

这样我们为TableB生成一个随机位置,然后在每一行中根据两个表之间的大小差异向其添加一些随机值,然后对该列上的整个结果进行排序。

关于mysql - 在选择结果之间随机添加记录,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/28299395/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com