[求助] 如何在尽可能少使用 DB::raw () 的前提下通过 Eloquent ORM 实现下列 SQL 语句?
目标:查出职员表中 用户只在一个在职企业担任管理员 的记录,并只取出企业 ID < 1000 的部分。
注意:用户只在企业 ID < 1000 中的一个企业在职担任管理员,但也在企业 ID >= 1000 的企业中在职担任管理员的,均不在输出结果之内。另外,是否离职担任管理员( is_admin = 1 and deleted_at is not null )不影响查询结果。
以下为 SQL 语句:
SELECT
*
FROM
`staff`
WHERE
`id` IN ( SELECT `id` FROM `staff` WHERE `is_admin` = 1 AND `deleted_at` IS NULL GROUP BY `user_id` HAVING count( 1 ) = 1 )
AND company_id < 1000
如果 SQL 语句还有优化空间,欢迎补充。
推荐文章: