gpt4 book ai didi

mysql - 如何针对第一个查询的结果运行第二个查询?

转载 作者:行者123 更新时间:2023-11-29 22:49:09 25 4
gpt4 key购买 nike

这是更新后的场景,希望比上一个版本更清晰。

表 1 存放此流程的所有数据,包含大约 500 万条记录。

`table1`
ID Forename Surname Tel Source Optin DistributedDate
1 A Test 0131 TL037 NULL NULL
2 B Test 0141 TL035 NULL NULL
v v v v v v v

表 2 通过插入脚本进行更新,并包含一段时间内使用的不同源列表,这可以很容易地由 View 创建。

INSERT INTO table2(`Sourcecode`)
(SELECT DISTINCT(a.`Sourcecode`) FROM `table1` a)

`table2 - structure`
ID Sourcecode
1 TL037
2 TL031
3 TL004
4 TL029
5 TL035

我现在尝试从表 2 的每个不同源中提取 5 个随机记录的详细信息,并将这些详细信息插入到表 3 中。

`table3 - structure`
ID Forename Surname Tel Source Optin DistributedDate
NULL NULL NULL NULL NULL NULL NULL

这是我迄今为止创建的代码:

SET @Sourcecode = 
(SELECT b.`Sourcecode`
FROM `table2` b
WHERE b.id = b.id
AND b.`Sourcecode` NOT IN (SELECT DISTINCT(source) FROM `table3`)
LIMIT 1);

INSERT INTO table3.*
(SELECT
a.id AS 'ID',
a.`FirstName` AS 'Forename',
a.`Surname` AS 'Surname',
a.`TelephoneNumber2` AS 'Tel',
a.`SourceCode` AS 'Source',
a.`optin` AS 'Optin',
a.`DateExported` AS 'DistributedDate'
FROM `table1`
WHERE a.`SourceCode` = @SourceCode
ORDER BY RAND(a.sourcecode)
LIMIT 5

基本上,我正在寻找的最终结果是从结果集中针对 @Sourcecode 自动运行上述查询多次,直到值为 NULL。

我已经使用循环函数尝试过此操作,但运气不佳。

最佳答案

您可以像这样创建一个 View :

CREATE VIEW query1 AS
SELECT DISTINCT(b.`source`)
FROM `table2` b

然后从 View 中收集为:

SELECT *
FROM `table1` a
WHERE a.`source` IN(DISTINCT(b.`source`) FROM `query1` b)
ORDER BY RAND(a.id)
LIMIT 5)

我自己没有测试过,如果这不起作用,请提供一些来源和预期数据。

关于mysql - 如何针对第一个查询的结果运行第二个查询?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/28960988/

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