我有兩個表加入user_id
。在下面的查詢中,我正在比較table_two中的act_val
,以確保它位於或等於來自table_one的min_val
和max_val
之間。但是有時table_one中的user_id
在table_two中找不到。在這些情況下,我希望act_val
被視爲0,並限定table_one的min_val
較低。那可能嗎?怎麼會這樣?如何將NULL值視爲0從MySQL
SELECT tb1.id FROM table_one tb1
INNER JOIN table_two tb2 WHERE
tb1.min_val <= tb2.act_val AND tb1.min_val >= tb2.act_val
AND tb2.user_id = tb1.user_id
GROUP BY ad.id;
我實現這一點,但左加入了我的查詢需要幾分鐘來計算(100X慢)。我還有其他的內部聯接和條件。這是正常的嗎?我可以混合LEFT JOIN和INNER JOIN嗎? – Kyle 2011-03-13 21:05:17
你可以混合內部/左邊的連接,但你必須確保它按正確的順序完成。不僅如此,LEFT JOINs意味着即使沒有要在右側匹配的記錄,也要從左側開始記錄所有記錄 - 根據定義,這會增加處理其餘查詢記錄的次數 – RichardTheKiwi 2011-03-13 21:20:37