Mysql 是否重写SQL子查询以加入?
是否可以从此SQL中删除子查询?我需要根据比赛的比分排序,但显然不能根据别名排序Mysql 是否重写SQL子查询以加入?,mysql,sql,Mysql,Sql,是否可以从此SQL中删除子查询?我需要根据比赛的比分排序,但显然不能根据别名排序 SELECT * FROM (SELECT b.shortDesc, b.img, sm.uri, match(`bodyCopy`, `shortDesc`) against ('Storage' IN NATURAL LANGUAGE MODE WITH QUERY EXPANSION) AS score FROM `blog` b J
SELECT *
FROM
(SELECT b.shortDesc,
b.img,
sm.uri,
match(`bodyCopy`, `shortDesc`) against ('Storage' IN NATURAL LANGUAGE MODE WITH QUERY EXPANSION) AS score
FROM `blog` b
JOIN `sitemap` sm ON sm.id = b.pageId
WHERE 'Active' IN (b.status, sm.status)
) t1
WHERE score > 0
ORDER BY score DESC
在这里:
在这里:
您可以删除子查询:
SELECT b.shortDesc,
b.img,
sm.uri,
match(`bodyCopy`, `shortDesc`) against ('Storage' IN NATURAL LANGUAGE MODE WITH QUERY EXPANSION) AS score
FROM `blog` b
JOIN `sitemap` sm ON sm.id = b.pageId
WHERE 'Active' IN (b.status, sm.status)
HAVING score > 0
ORDER BY score DESC
在计算结果之前,分数的值是未知的。这意味着它不能用在WHERE子句中。相反,它可以用于拥有。最后应用的顺序,可以在此处使用分数
文档:同样对于拥有和订购您可以去掉子查询:
SELECT b.shortDesc,
b.img,
sm.uri,
match(`bodyCopy`, `shortDesc`) against ('Storage' IN NATURAL LANGUAGE MODE WITH QUERY EXPANSION) AS score
FROM `blog` b
JOIN `sitemap` sm ON sm.id = b.pageId
WHERE 'Active' IN (b.status, sm.status)
HAVING score > 0
ORDER BY score DESC
在计算结果之前,分数的值是未知的。这意味着它不能用在WHERE子句中。相反,它可以用于拥有。最后应用的顺序,可以在此处使用分数
文档:同样对于have和ORDER一目了然,使用HAVING子句可能会起作用。我需要一个你的模式转储来确定。乍一看,使用HAVING子句可能会奏效。我需要一个你的模式转储,以确保。所以分数可以在有和顺序,但不是在哪里?谢谢。这么多年过去了,我还是个SQL高手+1,但请注意HAVING子句的使用是其他数据库语言中不存在的MySQL扩展。如果我没有使用MySQL(我正好是),你会如何在where子句中使用score?@keyboardSmasher它实际上取决于特定的数据库;有些允许引用别名,有些则不允许。有些仅在GROUPBY子句存在时才允许HAVING子句。请注意,所有数据库都有自己的实现,因此请始终参考文档以了解您使用的确切版本。因此,分数可以按顺序排列,但不能按位置排列?谢谢。这么多年过去了,我还是个SQL高手+1,但请注意HAVING子句的使用是其他数据库语言中不存在的MySQL扩展。如果我没有使用MySQL(我正好是),你会如何在where子句中使用score?@keyboardSmasher它实际上取决于特定的数据库;有些允许引用别名,有些则不允许。有些仅在GROUPBY子句存在时才允许HAVING子句。请注意,所有数据库都有自己的实现,因此请始终参考文档以了解您使用的确切版本。谢谢,但是您的回答失败了。这就是我创建子查询的原因:“where子句”中的未知列“score”谢谢,但是您的答案失败了。这就是我创建子查询的原因:“where子句”中的未知列“score”