[英]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.