Laravel,如何在where查询中使用select AS?

      $data['losers'] = $data['losers']
            ->select(DB::raw('ROUND((((users_24h-users_48h_24h) / users_48h_24h) * 100),2) AS daypercentage, name'))
            ->where('daypercentage', '>=', '0')

如果我在 where 查询中使用 daypercentage,则无法找到它。在这种情况下怎么可能呢?


慕桂英4014372
浏览 93回答 1
1回答

泛舟湖上清波郎朗

在 SQL 中,select子句中定义的别名不能在where子句中重复使用。您需要重复表达式(或使用子查询或 cte)。MySQL 有一个技巧,允许在having子句中使用别名,但我不建议在这里这样做。您似乎只想要非负百分比,所以我认为您的where条款可以简化为:where users_24h >= users_48h_24h我不确定用 Lavarel 表达这一点的最佳方式是什么,也许:->select(DB::raw('round( (users_24h - users_48h_24h) / users_48h_24h * 100,2) as daypercentage, name')) ->where(DB::raw('users_24h >= users_48h_24h'))请注意,我删除了表达式中一些不必要的括号round()。
打开App,查看更多内容
随时随地看视频慕课网APP