gpt4 book ai didi

php - 从一个表中选择与另一表中的值匹配的不同且随机的行

转载 作者:行者123 更新时间:2023-11-29 23:15:35 24 4
gpt4 key购买 nike

这个主题已经被广泛讨论,但我无法找到可以修改并使其适合我的案例的解决方案。因此,也许更高级的专家能够提供帮助。

我有一个名为 keywords 的表,其中包含大约 3000 行具有不同关键字的行。每个关键字都有一个匹配的 product_id,它们不是唯一的,即其中一些是重复的。表格看起来像这样:

+---------+------------+
| keyword | product_id |
+---------+------------+
| apple1 | 15 |
| apple2 | 15 |
| pear | 205 |
| cherry | 307 |
| melon | 5023 |
+---------+------------+

我有第二个表,名为 inventory,其中包含大约 500K 种产品,每种产品都有自己的产品 ID 和其他产品数据。

现在,我需要从 inventory 表中获取与 keywords 表中的每个 product_id 匹配的随机产品行,并将这些行插入到另一个表中。

结果表应该是这样的:

+---------+------------+---------+---------+---------+
| keyword | product_id | product | data1 | data2 |
+---------+------------+---------+---------+---------+
| apple1 | 15 | app5 | d1 | d2 |
| apple2 | 15 | app1 | d1 | d2 |
| pear | 205 | pear53 | d1 | d2 |
| cherry | 307 | cher74 | d1 | d2 |
| melon | 5023 | melo2 | d1 | d2 |
+---------+------------+---------+---------+---------+

这是我目前的查询,问题是如何从 inventory 中获取与 product_id 匹配的随机产品:

SELECT keywords.keyword, keywords.product_id, inventory.*
FROM keywords LEFT OUTER JOIN
inventory
ON keywords.product_id = inventory.id
ORDER BY RAND();

最佳答案

如果您希望它仅在表之间存在匹配时返回行,那么您需要常规(即内部)连接而不是左外连接。您还可以添加单词distinct

SELECT DISTINCT keywords.keyword, keywords.product_id, inventory.*
FROM keywords JOIN
inventory
ON keywords.product_id = inventory.id
ORDER BY RAND();

如果您只想返回 1 行,请在末尾添加 limit 1

SELECT keywords.keyword, keywords.product_id, inventory.*
FROM keywords JOIN
inventory
ON keywords.product_id = inventory.id
ORDER BY RAND() LIMIT 1;

关于php - 从一个表中选择与另一表中的值匹配的不同且随机的行,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/27847472/

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