以下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