[英]Multiple select statements in one query
我可以在2个查询中执行以下操作,但要使其更简单。 可以将其合并为一个查询吗? 如果是这样,它比执行两个查询比执行一个查询有效率更高?
query1: SELECT page_id, coupon_id from table_1 WHERE key = :key
query2: SELECT folder from table_2 WHERE page_id = table_1.page_id
为了获得最终结果,我需要有一个来自table_1的coupon_id和一个来自table_2的文件夹。
在query2中,我需要使用query1的page_id结果来获取文件夹
有没有更简单的方法可以做到这一点?
使用JOIN ( LEFT
, RIGHT
或INNER
取决于您的需要):
SELECT
t1.page_id,
t1.coupon_id,
t2.folder
FROM
table_1 AS t1
LEFT JOIN table_2 AS t2 ON
t2.page_id = t1.page_id
WHERE
t1.key = :key
您将要JOIN
page_id
上的表:
SELECT t1.page_id,
t1.coupon_id,
t2.folder
from table_1 t1
inner join table_2 t2
on t1.page_id = t2.page_id
WHERE key = :key
如果您在学习连接语法方面需要帮助,这是对join的直观说明 。
我使用了INNER JOIN
,它将返回两个表之间匹配的所有行。 如果您要返回表table_1
所有行,即使它在表table_2
中没有匹配的行,那么您也可以使用LEFT JOIN
SELECT
table_1.coupon_id AS coupon_id,
table_2.folder AS folder
FROM
table_1
INNER JOIN table_2 ON table_2.page_id = table_1.page_id
WHERE
table_1.key = :key
SELECT t1.page_id, t1.coupon_id, t2.folder
FROM table_1 t1 LEFT JOIN table_2 t2 ON (t1.page_id = t2.page_id)
WHERE t1.key = :key
这将比两个查询快,多少取决于您的数据。
请尝试以下方法:
SELECT a.page_id, a.coupon_id, b.folder_id
from table_1 a
join table_2 b
ON a.page_id = b.page_id
WHERE a.key = :key
group by a.page_id
;
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.