我有3個表如下,Mysql的從3個表得到最低的價格。提高效率
1. Link_products_price
DESC: unique_id|product_id|sub_category_id.
2. local_price
DESC: unique_id|price.
3. online_price
DESC: unique_id|price.
我想選擇最低的價格對於一個給定的product_id | sub_category_id。
我想出了下面,
方法1:
SELECT MIN(price)
FROM local_price
WHERE unique_id IN (SELECT unique_id
FROM link_products_price
WHERE product_id=1
AND sub_category_id=1)
UNION
SELECT MIN(price)
FROM online_price
WHERE unique_id IN (SELECT unique_id
FROM link_products_price
WHERE product_id=1
AND sub_category_id=1)
LIMIT 1;
方法2:
與內創建一個視圖JOIN這3個表和查詢MIN(價格)從該視圖在應用程序中是必需的。
不過,鑑於只會在運行時執行查詢。
請告訴我方法1查詢是否完成,如果它可以在VIEW
方法來進一步優化和建議了。
謝謝爲答覆。我可以禮貌地請求你向我解釋這個查詢中的好東西嗎?在某種程度上,我瞭解左連接在這種情況下的必要性。而不是盲目地複製和粘貼我想知道的查詢,爲什麼?因爲下次我會自己寫。再次感謝。 – beck03076
@ beck03076:外連接是僅需要(相對於內的)的情況下有在價格表中沒有匹配的記錄;雖然這麼說,在這種情況下'LEAST()'會導致'NULL'值,外連接實際上並不增加多少在這裏的所有,你可以簡單地處置'LEFT'關鍵字。 PS,我的答案中的單詞「join」是鏈接到一個很好的關於連接的教程。 – eggyal
非常感謝你。 – beck03076