以下SQL,与WHERE子句中的MAX都汇集功能,不工作:MAX()在WHERE子句
SELECT
ID,
title,
relevance
FROM
myTable
WHERE
(relevance <= MAX(relevance)/2)
任何人都可以点我在正确的方向? myTable是一个临时表,因此不能使用子查询重新引用。谢谢!
以下SQL,与WHERE子句中的MAX都汇集功能,不工作:MAX()在WHERE子句
SELECT
ID,
title,
relevance
FROM
myTable
WHERE
(relevance <= MAX(relevance)/2)
任何人都可以点我在正确的方向? myTable是一个临时表,因此不能使用子查询重新引用。谢谢!
SET @MaxRel=(SELECT MAX(relevance)/2 FROM myTable);
SELECT ID,title,relevance FROM myTable WHERE (relevance <= @MaxRel);
愿这帮助
尝试使用sub query
SELECT
ID,
title,
relevance
FROM
myTable
WHERE
(relevance <= (SELECT MAX(relevance)/2 FROM myTable))
使用具有另一种方式就像
SELECT
ID,
title,
relevance
FROM
myTable
GROUP BY ID
HAVING
(relevance <= MAX(relevance)/2)
您需要使用子查询
SELECT
ID,
title,
relevance
FROM
myTable
WHERE
(relevance <= (SELECT MAX(relevance) FROM myTable) /2)
感谢您的快速响应。不幸的是,myTable是一个临时表,所以在同一个查询中不能被引用2x – Travis 2010-11-03 06:13:03
你应该可以做这样的事情。 (未经测试,所以请让我知道,如果如预期这不起作用。)
SELECT * FROM
(
SELECT
ID,
title,
relevance,
IF(relevance > @max, @max := relevance, @max := @max) AS max_relevance
FROM
mytable,
(SELECT @max:=0) m
) Q
WHERE relevance <= max_relevance/2
;
Common MySQL Queries一些好的代码示例。查找关于如何在查询中使用变量的示例,组内配额(每组最多N),如上所示。
使用由naresh提到的变量的方法是查询数据库的好方法,因为它可以轻松理解查询。
SELECT
ID,
title,
relevance
FROM
myTable inner join (SELECT MAX(relevance) as maxRel FROM myTable) A
WHERE
(relevance <= (A.maxRel/2))
还是应该让你回到与之前相同的行数,因为“A”只有一行。
不幸myTable的是一个临时表,所以只能在同一个查询 – Travis 2010-11-03 06:08:36
一次提到修改我的答案是否溶液2是工作 – 2010-11-03 06:13:41
HAVING子句是一个聚合一个地方,这将是正确的答案 – Leslie 2010-11-03 13:48:26