这是我的表(table1):
id | code | tid | iid |
1 | xx | 0 | 1 |
2 | xx | 1 | 0 |
现在如果我做SQL
'SELECT * FROM 'table1' LEFT JOIN 'table_t' ON 'table_t'.'id' = 'table1'.'tid' LEFT JOIN 'table_i' ON 'table_t'.'id' = 'table1'.'iid' GROUP BY 'code'
现在,当我搜索代码' xxx'和LEFT JOIN另外2个表在这里,JOIN将加入' 0'来自tid
,但我想加入' 1' (或只是最高的数字)。有没有人有一个好的(和快速)SQL?或者甚至可能吗?
我也做了一个非常简单的SQL谜语:http://sqlfiddle.com/#!2/d10bc6/1
我需要这样的东西:
SELECT *
from jointable j
left join tid_table t on t.id = MAX(j.tid)
left join iid_table i on i.id = MAX(j.iid)
group by code
希望有人能提供帮助,我一直在寻找并尝试数小时。
编辑正如您在演示中所看到的那样,我得到了" null"对于tid_naam
,这应该是tid-name
答案 0 :(得分:2)
您正在使用group by但没有任何聚合函数,因此请使用MAX()
这将解决问题以获得最高值的字段
select j.id,j.code,MAX(j.tid)tid,MAX(j.iid) iid ,
t.*,i.*
from jointable j
left join tid_table t on t.id = j.tid
left join iid_table i on i.id = j.iid
group by code
如果您要搜索代码,可以See search demo
其他方式,您可以使用基于列的最大值
的子选择select j.id,j.code,MAX(j.tid)tid,MAX(j.iid) iid ,
t.*,i.*
from
(SELECT id,code,MAX(tid)tid,MAX(iid) iid FROM jointable group by code)
j
left join tid_table t on t.id = j.tid
left join iid_table i on i.id = j.iid
group by code