Laravel 5.8,在 where 子句中带有 Count(*) 的棘手子查询

Posted

技术标签:

【中文标题】Laravel 5.8,在 where 子句中带有 Count(*) 的棘手子查询【英文标题】:Laravel 5.8, Tricky subquery with Count(*) in where clause 【发布时间】:2019-08-29 06:28:29 【问题描述】:

我需要在 where 子句中写一个有点棘手的子查询

所以,我有一个这样的查询

Select * FROM table1
JOIN table2 ...
LEFT JOIN table3 ...
WHERE (SELECT COUNT(*) FROM some_table where some_condition) = 0;

SQL 工作正常,但如何将其移至 Laravel? 是的,我知道我应该使用DB::raw(),但问题是子查询返回计数。因此,例如,计数是 5454。在那之后,我有这样的事情。

->where(5454, '=', 0)

它给了我明显的错误信息:Unknown column 5454 ...

我也尝试将AS count 用于子查询,但在这种情况下,我会收到另一个明显的错误消息:Syntax error 0_0

那么,有什么建议吗?

【问题讨论】:

some_condition 是什么? 试试whereRaw("(SELECT COUNT(*) FROM some_table where some_condition) = 0") @SandeepSudhakaran,谢谢伙计!为什么这么简单? :D 请添加答案,我会接受的:) 我以前也遇到过同样的问题。 :P 快乐编码... 【参考方案1】:

试试

whereRaw("(SELECT COUNT(*) FROM some_table where some_condition) = 0")

这会对你有所帮助。

【讨论】:

酷..快乐编码

以上是关于Laravel 5.8,在 where 子句中带有 Count(*) 的棘手子查询的主要内容,如果未能解决你的问题,请参考以下文章

Hive 中带有 Join 或 Where 子句的条件

MySQL:在 WHERE 子句中带有 NOT IN 的从属子查询非常慢

SQL Server 中带条件的 Where 子句

为啥以及何时在 WHERE 子句中带有条件的 LEFT JOIN 不等于在 ON 中的相同 LEFT JOIN? [复制]

WHERE 子句中带有子查询的 MYSQL UPDATE 查询 - 优化

where 子句中带有字符的整数字段返回奇怪的输出