php - 左连接和分组

标签 php mysql join group-by

这是我的表格(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/

相关文章:

php - 在 mysqli 中存储和迭代查询结果

php - 如何在命名空间应用程序中使用内存缓存?

MySQL从特定的相关记录中获取所有数据

symfony - 在进行连接选择时,学说限制根实体中的文件吗?

MySQL 从另一个表中选择具有两个匹配连接行的行

PHP 无法获取 POST 日期值

php - 是否可以将 mysql_insert_id() 与 while 循环一起使用?

java - 哪个更快,或者它只是被认为是错误的代码

python - 在 DJANGO CRUD 数据库应用程序中创建父/主条目然后将关联数据字段添加到父/主条目的最佳方法是什么?

jquery - 显示 Facebook、Instagram 和其他社交网站等更新