我有三张桌子
1-销售
Id Unit Ref
1 200 RM-S-2002
2 300 RM-S-2003
2-租
Id Unit Ref
1 400 RM-R-2009
2 100 RM-R-2010
字段两个表的结构相同,在参考中间S代表销售表,R代表租赁表
3-详情
Id List_Ref
1 RM-R-2010
2 RM-S-2002
3 RM-S-2003
详细信息表包含两个表(租金和销售)的参考。现在我想选择单位
如果Details.List_ref = Rent.Ref,则选择Rent.Unit ELSE选择Sale.Unit。
此处条件出现在select ...之前如何在查询中使用?
答案 0 :(得分:1)
SELECT
IF(d.List_Ref LIKE '%-S-%', 'Sale', 'Rent') AS Type,
IF(d.List_Ref LIKE '%-S-%', s.Unit, r.Unit) AS Unit
FROM Details d
LEFT JOIN Sale s
ON d.List_Ref = s.Ref
LEFT JOIN Rent r
ON d.List_Ref = r.Ref;
输出
| TYPE | UNIT |
---------------
| Rent | 100 |
| Sale | 200 |
| Sale | 300 |
答案 1 :(得分:0)
尝试
SELECT d.id, d.list_ref, COALESCE(s.unit, r.unit) unit
FROM Details d LEFT JOIN Sale s
ON d.list_ref = s.ref LEFT JOIN Rent r
ON d.list_ref = r.ref
示例输出:
| ID | LIST_REF | UNIT | ------------------------- | 1 | RM-R-2010 | 100 | | 2 | RM-S-2002 | 200 | | 3 | RM-S-2003 | 300 |
这是 SQLFiddle 演示