这是我的表格(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”并左连接其他 2 个表时,该连接将连接 tid
中的“0”。 ,但我想加入“1”(或只是最大的数字)。有没有人有一个好的(并且快速的)SQL 来实现这个?或者说有可能吗?
我还制作了一个非常简单的 SQLfiddle: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
希望有人能提供帮助,我已经搜索并尝试了几个小时。
编辑 正如您在演示中看到的,我得到的 tid_naam
为“null” ,这应该是tid-name
最佳答案
您正在使用 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
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
Demo
关于php - 左连接和分组,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/23504183/