我的问题与此非常相似如何在SQL中引用自定义字段我有以下查询:
SELECT * , (SELECT COUNT( id )
FROM cms_store_items
WHERE speaker = cms_store_items_speakers.id
) AS count
FROM cms_store_items_speakers
LIMIT 0 , 30
Run Code Online (Sandbox Code Playgroud)
我需要添加一个看起来像的WHERE子句,WHERE count > 0但是当我这样做时,我得到错误Unknown column 'count' in 'where clause',无论如何我在where子句中引用自定义字段而没有重复逻辑?
我可以在我的代码中放置where子句的逻辑,但如果不需要,我不想向应用程序发送可能超过1000行的内容,这似乎是浪费资源.
Eri*_*ric 18
好吧,严格按照你的方式做到这一点:
select
*
from
(
SELECT * , (SELECT COUNT( id )
FROM cms_store_items
WHERE speaker = cms_store_items_speakers.id
) AS count
FROM cms_store_items_speakers
) a
where a.count > 0
LIMIT 0 , 30
Run Code Online (Sandbox Code Playgroud)
不过,做以下事情可能会更好.它充分利用了这个having条款:
select
s.id,
s.col1,
count(i.speaker) as count
from
cms_store_items_speakers s
left join cms_store_items i on
s.id = i.speaker
group by
s.id,
s.col1
having
count(i.speaker) > 0
limit 0, 30
Run Code Online (Sandbox Code Playgroud)
too*_*php 11
您可以使用HAVING子句代替:
...
) AS count
FROM cms_store_items_speakers
HAVING count > 0
LIMIT 0 , 30
Run Code Online (Sandbox Code Playgroud)
HAVING是的,WHERE但它能够处理计算的列.警告: 在运行查询的其余部分之后HAVING通过修剪结果来工作- 它不能替代该子句.WHERE
| 归档时间: |
|
| 查看次数: |
15622 次 |
| 最近记录: |