mysql - Laravel 中的嵌套查询

标签 mysql laravel

这是我的 sql,我正在努力将其转换为 laravel 5.8 查询生成器语法。

    SELECT CC AS CountOfVisits, Count(CC) AS Users
    FROM
        (
        SELECT user_id, count(user_id) AS CC FROM mytable
        GROUP BY user_id
        ) AS CC
    GROUP BY CC;

我尝试过这个:

     $frequency= DB::connection('mysql2')
            ->select(DB::raw('CC AS CountOfVisits'), DB::raw('Count(CC) AS Users'))
            ->from(function($sq)
            {
               $sq->select(DB::raw('user_id, count(user_id) AS CC FROM '))
                    ->from('mytable')
                    ->groupBy('user_id');
            })
            ->groupBy('CC')
            ->get();

它的错误

Argument 1 passed to Illuminate\Database\Connection::prepareBindings() must be of the type array, object given, called in /var/app/portal/vendor/laravel/framework/src/Illuminate/Database/Connection.php on line 665

任何帮助都会非常感谢

最佳答案

我认为您遇到的问题是返回的连接需要完整查询的字符串,并在第二个参数上进行附加绑定(bind)。如果您愿意,您仍然可以首先使用照亮的查询构建器构建它,然后使用生成的字符串运行选择。

$query = DB::query()
    ->select('CC AS CountOfVisits', DB::raw('count(CC) AS Users'))
    ->fromSub(function (\Illuminate\Database\Query\Builder $query) {
        $query->select('user_id', DB::raw('count(user_id) AS CC '))
            ->from('mytable')
            ->groupBy('user_id');
    }, 'CC')
    ->groupBy('CC');

$result = DB::connection()->select($query->toSql());

关于mysql - Laravel 中的嵌套查询,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/58427823/

相关文章:

mysql - 从 hibernate 中的一行中选择一列

python - 如何在Python中将datetime.date对象转换为字符串

mysql - 从mysql导入数据到druid

laravel - Eloquent `update()` 方法也更新脏列

php - Laravel 5 无需密码登录

mysql - 将两个查询转换为一个更新查询

javascript - 加载ajax后如何清除url中的#?

mysql - SQLSTATE[42S22] : Column not found: 1054 Unknown column '1' in 'field list' (SQL: select `1` from `phonebooks` )

mysql - Laravel 选择位置/计数查询

c# - 如何从 localstack 中的 Lambda 函数连接到 mysql?