MySql:Multiple Queries从不同的表中选择一列

时间:2015-08-11 10:25:26

标签: mysql

mysql> select * from SC_rules;
+--------+--------+--------+---------------+
| old_SC | new_SC | fee_JD | offer_id_Flag |
+--------+--------+--------+---------------+
|    114 |    111 |  5.000 |             1 | 
|    114 |    310 |  6.000 |             1 | 
|    114 |     41 |  2.000 |             0 | 
+--------+--------+--------+---------------+

mysql> select * from offer_rules;
+--------+--------+----------+-------+
| old_SC | new_SC | offer_id | price |
+--------+--------+----------+-------+
|    114 |    111 |       10 | 1.000 | 
|    114 |    310 |       20 | 0.500 | 
+--------+--------+----------+-------+

我希望SC_rules中的offer_id_Flag = 0的价格和来自offer_rules的价格,其中offer_id_flag = 1一次选择。

2 个答案:

答案 0 :(得分:0)

您可以使用条件LEFT JOIN来实现此目的,并使用COALESCE获取第一个非NULL结果。

像这样(未经测试):

SELECT  COALESCE(o.price, sc.price)
  FROM  SC_rules sc
    LEFT JOIN offer_rules o ON o.old_SC = sc.old_SC AND sc.offer_id_Flag = 1

基本上,从price表中获取offer_rules(如果存在),否则从price表中获取sc_rules(顺便说一句,此列似乎从你问题中的源数据。)

JOIN通过匹配old_SC列上的行来工作,但您应该将其修改为主\外键所在的列。重要的部分是sc.offer_id_Flag = 1上的连接,它只在标志值为1时生成连接(如您所愿)。

答案 1 :(得分:0)

SELECT `fee_JD` as 'price' FROM `SC_rules` WHERE `offer_id_Flag`.`SC_rules` = '0';
SELECT `price` FROM `offer_rules` WHERE `offer_id`.`SC_rules` = '1';

如果您想要多个查询。