Php 如何使用elount/Laravel执行此查询:子查询WHERE IN with GROUP BY
我尝试在MySQL中实现此功能,但没有成功:Php 如何使用elount/Laravel执行此查询:子查询WHERE IN with GROUP BY,php,mysql,laravel,eloquent,Php,Mysql,Laravel,Eloquent,我尝试在MySQL中实现此功能,但没有成功: SELECT * FROM tableName WHERE id IN ( SELECT MAX(id) FROM tableName GROUP BY var1, var2, var3 ); 变成一个雄辩的问题。这不起作用: $output = TableName::whereIn('id', function($query){ $query->select(\DB::raw(
SELECT * FROM tableName
WHERE id IN (
SELECT MAX(id)
FROM tableName
GROUP BY var1, var2, var3
);
变成一个雄辩的问题。这不起作用:
$output = TableName::whereIn('id', function($query){
$query->select(\DB::raw(
'SELECT * FROM TableName WHERE id IN (
SELECT MAX(id)
FROM TableName
GROUP BY var1, var1, var1);'))
})->get(); dd($output);
我希望得到与MySQL Workbench相同的输出。
请帮忙!提前感谢。试试这个:
$output = TableName::whereIn('id', function($query){
$query->select(\DB::raw(
'SELECT * FROM TableName WHERE id IN (
SELECT MAX(id)
FROM TableName
GROUP BY var1, var1, var1);'))
});
dd($output->toSql(), $output->getBindings());
您将拥有纯sql及其值,请尝试以下操作:
$output = TableName::whereIn('id', function($query){
$query->select(\DB::raw(
'SELECT * FROM TableName WHERE id IN (
SELECT MAX(id)
FROM TableName
GROUP BY var1, var1, var1);'))
});
dd($output->toSql(), $output->getBindings());
您将拥有纯sql及其值@techienomics您可以试试这个 $output=TableName::选择“*” ->其中,raw'id1 in通过var1、var2、var3从tableName组中选择MAXid2' ->得到;
我希望它能有所帮助。@techienomics您可以试试这个 $output=TableName::选择“*” ->其中,raw'id1 in通过var1、var2、var3从tableName组中选择MAXid2' ->得到; 希望有帮助。你能试试这个吗
$output = TableName::whereIn('id', function($query){
$query->select(\DB::raw('SELECT MAX(id) FROM TableName'))
->groupBy(['var1', 'var1', 'var1'])
})->get();
我不知道var1 var1是否相同。如果是相同的,那么您可以使用->groupBy'var1'
希望有帮助 你能试试这个吗
$output = TableName::whereIn('id', function($query){
$query->select(\DB::raw('SELECT MAX(id) FROM TableName'))
->groupBy(['var1', 'var1', 'var1'])
})->get();
我不知道var1 var1是否相同。如果是相同的,那么您可以使用->groupBy'var1'
希望有帮助 那么,您在MySQLWorkbench上的输出是什么?也许向我们展示这将帮助我们帮助您。那么您在MySQLWorkbench上的输出是什么?也许向我们展示这将帮助我们帮助您。谢谢Jovs,我想$query->select中缺少“”。Andrew的建议按预期工作:$output=TableName::select'*'->whereRaw'id1 in select MAXid2 FROM TableName group by var1、var2、var3'->get;再次感谢!感谢Jovs,在$query->select中缺少了“”。Andrew的建议按预期工作:$output=TableName::select'*'->whereRaw'id1 in select MAXid2 FROM TableName group by var1、var2、var3'->get;再次感谢!谢谢安德鲁!这对我有用。再次感谢!不客气。请做好标记,将其作为帮助他人的解决方案。谢谢Andrew!这对我有用。再次感谢!不客气。请做好标记,将其作为帮助他人的解决方案。谢谢Mateus,我无法为我完成此代码。Andrew的建议按预期工作:$output=TableName::select'*'->whereRaw'id1 in select MAXid2 FROM TableName group by var1、var2、var3'->get;再次感谢!谢谢Mateus,我不能为自己编写代码。Andrew的建议按预期工作:$output=TableName::select'*'->whereRaw'id1 in select MAXid2 FROM TableName group by var1、var2、var3'->get;再次感谢!