内部连接表以防万一MySql

时间:2019-01-25 04:55:59

标签: mysql sql case inner-join

我有一种情况,我想在满足条件时内部联接表。我想要类似

SELECT * FROM table_1 
CASE 
    WHEN some_condition THEN INNER JOIN table_2 ON some_other_condition
END

我已经阅读了许多参考资料和以前的StackOverflow答案。但是,那些不符合我的要求。

编辑:

Table 1
id  |  name  |  price
1   |  aaa   |  111
2   |  bbb   |  222
____________________

Table 2
id  |  discountedPrice  |  orgId
1  |   100          |        org1
2  |   200          |        org2

添加了表格。对于某些组织,我想显示唯一的价格。但是,某些用户可以享受价格折扣。因此,要向少数用户显示折扣。所以,我想有条件地内部加入。

2 个答案:

答案 0 :(得分:1)

使用left join。您不清楚要实际执行的操作,但是类似以下内容:

select t1.*, coalesce(t2.discounted_price, ?) as discounted_price
from table_1 t1 left join
     table_2 t2
     on <join conditions> and
        <some condition>;

答案 1 :(得分:0)

在这种情况下,请使用IF子句验证条件,然后继续进行INNER JOIN查询。

我不确定您的条件是否匹配。作为一个虚拟人,我只是简单地放置一个SELECT

语法

IF expression THEN
   statements;
ELSE
   else-statements;
END IF;

您可以在下面尝试

 IF (some_condition to filter org) THEN

 SELECT * FROM table_1 INNER JOIN table_2 ON some_other_condition

 ELSE

 SELECT * FROM table_1 ;

END IF