我有两个表加入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