繁体   English   中英

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

[英]With SQL (mysql) Append the results of one sub-query to that of another

我有两个mysql表。 基本上我想在一个SQL查询中组合两个查询(每个表一个)。 好像它应该很容易(有点像内部Join)但是内连接是将表2中的非uniqe值重复到我的结果数组中...我不希望它们重复...我想要从表/查询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)";

所以我想从ALL返回的记录中获取EACH 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)

尝试类似于此的东西,它会将表1的结果连接到包含sid值的列的表2。

SELECT a.*, b.extra_data, pub_url
FROM table1 a
left outer join table2 b on a.sid = b.sid 
WHERE a.sid IN ($sid)

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM