gpt4 book ai didi

MySQL 合并多个查询

转载 作者:太空宇宙 更新时间:2023-11-03 11:43:18 28 4
gpt4 key购买 nike

这是一个示例表。

ColZero | ColOne | RoColTwo
--------+--------+--------
1 | one | tag1
2 | two | tag1
3 | three | tag2
4 | four | tag2
5 | five | tag3

我有以下查询。

SELECT `ColOne` FROM `Table` WHERE `ColTwo` = ? ORDER BY rand() LIMIT 1;

我想选择多行,在单个查询中使用 RowTwo 的多个值,但每行仍然必须是随机的。

这涉及将此查询的可变数量的实例合并到一个新的单个查询中。

这如何在一次查询中完成? (我正在尝试尽可能快地完成此操作,因此在一个请求中完成所有操作,而不是 10-30 个请求是一个很大的优势。)

最佳答案

可能最有效的方法是使用变量:

SELECT t.*
FROM (SELECT t.*,
(@rn := if(@r = RowTwo, @rn + 1,
if(@r := RowTow, 1, 1)
)
) as rn
FROM `Table` t CROSS JOIN
(SELECDT @r := '', @rn := 0) params
WHERE `RowTwo` IN (?, ?, ?)
ORDER BY RowTwo, rand()
) t
WHERE rn = 1;

如果您不想使用动态 SQL 并且希望支持无限数量的值,您可以考虑:

WHERE FIND_IN_SET(RowTwo, ?) > 0

无论如何,将列命名为 ROW 会导致(至少对我而言)认知失调。

关于MySQL 合并多个查询,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/40268650/

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