gpt4 book ai didi

php - 坚持在 MySQL 上使用 HAVING

转载 作者:可可西里 更新时间:2023-11-01 08:24:26 26 4
gpt4 key购买 nike

我总是使用 WHERE 子句而不是 HAVING,但在这种情况下,我使用的是别名..,即使用 HAVING 子句而不是 WHERE..

这里是我的问题

Select 
ID,
post_date,
post_date_gmt,
post_content,
post_title,
post_status,
post_name,
post_type,
max(case when meta_key = 'ctg' then meta_value end) as category,
max(case when meta_key = 'qlty' then meta_value end) as quality
from
get_movies
where
post_status = 'publish'
and post_type = 'movies'
and meta_key in ('ctg','qlty')
and post_title like '%a%'
OR *CATEGORY LIKE '%a%'*
group by
ID,
post_date,
post_date_gmt,
post_content,
post_title,
post_status,
post_name,
post_type
order by
ID desc

我需要可以在字段别名中搜索一个类别。CATEGORY LIKE '%a%'这对我想要的是可能的吗?

来自答案的附加信息

@Stanislovas Kalašnikovas

[错误] 1054 - “where 子句”中的未知列“类别”

如果你从未见过 wordpress 表,请看这里

post_id | post_title       | meta_key     | meta_value
19 | Example Title1 | ctg | Horror
19 | Example Title1 | qlty | HD
20 | Example Title2 | ctg | Action
20 | Example Title2 | qlty | HD

如果我使用我的查询(使用别名),这是结果表

post_id | post_title       | category(created from alias meta_key)     | quality
19 | Example Title1 | Horror | HD

在这种情况下,我需要查询从 meta_key 创建的字段类别...

最佳答案

I am always using WHERE clause instead of HAVING

WHEREHAVING 不可互换。他们在不同的层面上运作。 WHERE 过滤行,HAVING 条件适用于为组计算的聚合值。

WHERE 无法评估涉及 category 别名的条件,因为它为分组后计算的值设置了别名。 WHERE 子句在分组之前进行评估。

CATEGORY LIKE '%a%' 条件必须保留在 HAVING 子句中(在 GROUP BY 之后)。

您的 WHERE 子句是错误的。 最后两个条件(由 OR 连接的)应该放在括号内,因为 AND 的优先级高于 OR。现在,查询会选择与类别匹配的所有行,而不管其他字段(post_statuspost_type 等)的值如何。

由于 OR,您需要在 HAVING 子句中移动两个条件:

SELECT
ID,
post_date,
post_date_gmt,
post_content,
post_title,
post_status,
post_name,
post_type,
max(case when meta_key = 'ctg' then meta_value end) as category,
max(case when meta_key = 'qlty' then meta_value end) as quality
FROM
get_movies
WHERE
post_status = 'publish'
and post_type = 'movies'
and meta_key in ('ctg','qlty')
GROUP BY
ID,
post_date,
post_date_gmt,
post_content,
post_title,
post_status,
post_name,
post_type
HAVING
post_title like '%a%'
or category like '%a%'
ORDER BY
ID desc

阅读documentation有关 SELECT statement 的更多信息以及它是如何执行的。

关于php - 坚持在 MySQL 上使用 HAVING,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/45835583/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com