2012-08-10 48 views
0

我想查找我的表中是否有任何重複的票號。 我的代碼如下所示是1039的班級表中的第一個門票號碼,如果有重複,我想顯示。 1039不是重複的。我的問題是什麼?mysql中的重複票號

$query = "SELECT ticket, COUNT(ticket) AS NumOccurrences FROM classes GROUP BY ticket HAVING (COUNT(ticket) > 1)"; 
$result = mysql_query($query) or die(mysql_error());  
while($row = mysql_fetch_array($result))  
{ 
$ticket = $row['ticket']; 
} 

if($result) 
{ 
echo $ticket. "<br/>"; 
echo "there are " . mysql_num_rows($result) . " tickets "; 
} 

else 
{ 
echo "no duplicate "; 
} 
+0

請不要使用'mysql_ *'函數編寫新代碼。他們不再維護,社區已經開始[棄用程序](http://goo.gl/KJveJ)。請參閱* [紅盒子](http://goo.gl/GPmFd)*?相反,您應該瞭解[準備好的語句](http://goo.gl/vn8zQ)並使用[PDO](http://php.net/pdo)或[MySQLi](http://php.net/ mysqli的)。如果你不能決定哪些,[這篇文章](http://goo.gl/3gqF9)會幫助你。如果你選擇PDO,[這裏是很好的教程](http://goo.gl/vFWnC)。 – 2012-08-10 20:13:03

回答

1

您需要一個GROUP BY子句,否則您將計算所有門票。

SELECT ticket, COUNT(*) c FROM classes GROUP BY ticket HAVING (c > 1) 
+0

我改變了我的查詢,你能檢查它的權利嗎?謝謝 – Masoman 2012-08-10 20:09:44

+0

我認爲最好使用'HAVING NumOccurrences> 1'而不是重複'COUNT(ticket)'。希望mysql能夠優化常見的子表達式,但爲什麼要依賴它呢?我認爲這更清晰,可能會更有效率。 – Barmar 2012-08-10 21:34:18

-1

嘗試

SELECT ticket, COUNT(ticket) as `count` FROM classes GROUP BY ticket WHERE `count` > 1