【问题标题】:left join and return only the latest record from right table using LARAVEL 6.5.0使用 LARAVEL 6.5.0 左连接并仅返回右表中的最新记录
【发布时间】:2020-05-22 00:46:54
【问题描述】:
Table 1
----------
NameID     Name
------------------
1           A
2           B
3           C
-----------------

Table 2
--------------------
ID   NameID   Order   
--------------------
1      1      Sugar
2      1      Salt 
3      2      Garlic 
4      2      Sugar
5      2      Onion
6      3      Oil
7      3      Black pepper 

我只想返回每个 nameID 的最新且仅一条记录 右表不知道用什么代码

这是我要返回的结果

RESULT
----------------------------
Name           Order
---------------------------
A              Salt  
B              Onion    
C              Black pepper

控制器.php

return DB::table('table1')
->leftjoin('table2','table1.nameID','=','table2.nameID')
-get();

【问题讨论】:

  • 您是在尝试使用查询生成器还是编写自己的原始查询?
  • 是的......看我的帖子我编辑它我把我的代码

标签: php sql laravel join left-join


【解决方案1】:

使用不存在过滤

select Name, Order

from Table1 a 
inner join
(
Select a.NameID, Order from Table2 a 
where not exists(select 1 from Table2 b where a.NameID  = b.NameID  and a.ID < b.ID)
)b on a.NameID = b.NameID

【讨论】:

  • 我把它放在我的控制器上?
【解决方案2】:

试试这个

$data = Table1::select('Table1.Name', 'Table2.Order','Table2.ID')
->leftJoin('Table2', function($query) {
   $query->on('Table1.NameID','=','Table2.NameID')
        ->whereRaw('Table2.ID IN (select MAX(a2.ID) from Table2 as a2 join Table1 as u2 on u2.NameID = a2.NameID group by u2.NameID)');
})->get();

已编辑:

$data = Table1::select('Table1.Name', 'Table2.Order','Table2.ID')

【讨论】:

  • 哇工作,但最后一个数据的 ID 没有显示请帮助我
  • 即使我尝试使用 'table1.* ',table2.*' 也无法正常工作
【解决方案3】:

你可以试试下面的脚本-

SELECT B.NameID, B.Name, C.[Order]
FROM 
(
    SELECT Nameid,MAX(ID) ID
    FROM table_2
    GROUP BY NameID
)A
INNER JOIN Table_1 B ON A.NameID = B.NameID
INNER JOIN Table_2 C ON A.NameID = C.NameID AND A.ID = C.ID 

【讨论】:

    猜你喜欢
    • 2019-07-14
    • 2014-08-22
    • 2010-10-18
    • 1970-01-01
    • 2018-01-28
    • 2015-03-14
    • 2023-03-07
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多