gpt4 book ai didi

php - 使用 SQL (mysql) 将一个子查询的结果附加到另一个子查询的结果

转载 作者:行者123 更新时间:2023-11-30 22:06:16 25 4
gpt4 key购买 nike

我有两个 mysql 表。本质上,我想将两个查询(每个表一个)合并到一个 SQL 查询中。看起来应该很容易(有点像内部联接)但是内部联接是将表 2 中的非唯一值复制到我的结果数组中......我不希望它们重复......我想要表/查询 2 中的那些重复项合并成query1的结果记录

查询 1 从表 1 中获取记录。结果是唯一的。 (一个 ID 返回一条记录)它只是返回 ID 等于我的条件之一的记录中的所有字段。 [我使用 IN 而不是一堆 OR)

$sid = "'M-179','M-242','M-231','Q-2thru5'" ; 
$query = "SELECT * FROM table1 WHERE IN ($sid)`

查询 2 从表 2 中获取记录。但结果不是唯一的。一个ID可以返回多条记录。

$query2 = "SELECT extra_data, pub_url FROM table2 WHERE IN ($sid)";

所以我希望所有返回的记录中的每个 extra_data 和 pub_url 字段都只是放在查询 1 结果的末尾。我说的有道理吗?所以结果看起来像这样......

[0] => Array
(
* all my returned fields from the
record returned by query 1 here
$row['extra_data']
$row['pub_url'] <-returned record from query 2
$row['extra_data']
$row['pub_url'] <-another returned record from query 2
$row['extra_data']
$row['pub_url'] <-any another returned
record from query 2, etc..
)

最佳答案

合并结果是什么意思?

是否希望 query2 的结果出现在同一个相关行但只是额外的列,或者您希望它们显示为新行。

对于第一种情况,您必须使用JOIN

但我有一种感觉,你想做的是第二个案件。在这种情况下,您将不得不使用 UNION。但是请注意,在这种情况下,两个查询的列必须匹配。所以两个查询的联合看起来像这样:

-- pseudo code only
SELECT extra_data, pub_url FROM table1 WHERE IN ($sid)
union
SELECT extra_data, pub_url FROM table2 WHERE IN ($sid)

关于php - 使用 SQL (mysql) 将一个子查询的结果附加到另一个子查询的结果,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/41644523/

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