這是我遇到的問題的示例。該查詢應返回行paul
和rick
,因爲它們對子行具有最高的評級。相反,查詢返回dave
和owen
,我的猜測是因爲它們是第一個子行。我正在分組position
和使用MAX(child.rating)
,但查詢不像我想要的那樣工作。在真正的表中,我有很多列,這就是爲什麼我在select子句中使用child.*
。Mysql JOIN查詢最大值
MYTABLE
id | name | parentid| position| rating |
1 | mike | 1 | 1 | 6 |
2 | dave | 1 | 2 | 5 |
3 | paul | 1 | 2 | 7 |
4 | john | 1 | 2 | 3 |
5 | mike | 5 | 1 | 8 |
6 | owen | 5 | 2 | 2 |
7 | rick | 5 | 2 | 9 |
8 | jaye | 5 | 2 | 3 |
$getquery = mysql_query("SELECT MAX(child.rating),child.* FROM mytable child
LEFT JOIN mytable parent on parent.parentid=child.parentid
WHERE parent.name LIKE '%mike%' GROUP BY child.position,child.parentid");
while($row=mysql_fetch_assoc($getquery)) {
$id = $row['id'];
$name = $row['name'];
$parentid = $row['parentid'];
if($id==$parentid) {
continue;
}
echo "<p>Name: $name </p>";
}
我做了它仍然是返回戴夫和歐文 – user892134 2012-02-26 12:25:45
你爲什麼按位分組?它應該沒有這個工作,或嘗試按評級分組 – Mukesh 2012-02-26 12:43:52