簡體   English   中英

一個查詢中有多個選擇語句

[英]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結果來獲取文件夾

有沒有更簡單的方法可以做到這一點?

使用JOINLEFTRIGHTINNER取決於您的需要):

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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM