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一次选择。
答案 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';
如果您想要多个查询。