Mysql 如何在SQL中为别名列指定条件
如何在此查询中为具有别名的列提供条件 我的问题是:Mysql 如何在SQL中为别名列指定条件,mysql,sql,alias,Mysql,Sql,Alias,如何在此查询中为具有别名的列提供条件 我的问题是: select cnt.id as content_id, cnt.title as content_title, cnt.introtext, cnt.fulltext, cnt.ordering, cnt.images, cnt.alias, cnt.state, cnt.catid, f.item_id, cat.id as cat_id, cat.title as cat_title, max(case when f.field_id =
select
cnt.id as content_id,
cnt.title as content_title,
cnt.introtext,
cnt.fulltext,
cnt.ordering,
cnt.images,
cnt.alias,
cnt.state,
cnt.catid,
f.item_id,
cat.id as cat_id,
cat.title as cat_title,
max(case when f.field_id = 1 then f.value end) as inslider,
max(case when f.field_id = 2 then f.value end) as sliderquote
from snm_fields_values f
join snm_content cnt
on cnt.id = f.item_id
join snm_categories cat
on cnt.catid = cat.id
where cnt.state = 1
and f.value = 'ja'
group by f.item_id
order by f.item_id, inslider
这将返回以下内容:
sliderquote为NULL,因为它检查f.value是否等于'ja',而它从来不会这样做。如果删除该条件,我将获得该行中的正确数据,但我需要该条件
我怎么能仍然拥有它并且只将它应用于sliderquote
sliderquote='ja'不起作用,因为SQL不像我学的那样读取别名
我能做什么?我想您可能需要一个嵌套请求,如下所示:
SELECT *
FROM (SELECT cnt.id AS content_id,
cnt.title AS content_title,
cnt.introtext,
cnt.fulltext,
cnt.ordering,
cnt.images,
cnt.alias,
cnt.state,
cnt.catid,
f.item_id,
cat.id AS cat_id,
cat.title AS cat_title,
Max(CASE
WHEN f.field_id = 1 THEN f.value
END) AS inslider,
Max(CASE
WHEN f.field_id = 2 THEN f.value
END) AS sliderquote
FROM snm_fields_values f
JOIN snm_content cnt
ON cnt.id = f.item_id
JOIN snm_categories cat
ON cnt.catid = cat.id
WHERE cnt.state = 1
GROUP BY f.item_id
ORDER BY f.item_id,
inslider)T
WHERE T.sliderquote = 'ja'
这看起来像是MySQL代码,确切地说是无效的MySQL代码。您正在按项目id分组,但随后选择了大量其他列。这可能有助于您了解SQL的读、懂、写都很难。这里的大多数人想要格式化的文本,而不是图像。我看不懂那个图像的微小图像。提示:HAVING子句。或派生表子查询。谢谢!您的答案返回为空,因为T.sliderquote需要是T.inslider。在我改变后,它工作得很完美。我不知道你可以用这样的别名嵌套查询。我学到了一些新东西,谢谢。