![](/img/trans.png)
[英]mysql Does the change in where clause order of select query increases performace?
[英]Mysql select where and order by
我有一個點系統,就像人們可以升級到[PRO1]用戶。 每個人的權利(pro1,pro2,用戶)都存儲在我的mysql用戶表中。 但是我想做一點飼料,顯示最新的升級到[PRO1]。 升級代碼:
$insert = "UPDATE `users` SET `points` = (`points`-50) WHERE `username` = '".$username."' and points > 50";
mysql_query($insert);
if (mysql_affected_rows() > 0)
{
// other codes
$insert = "UPDATE users SET rights=' [PRO1]' WHERE `username` = '".$username."'";
mysql_query($insert);
header('location: succesupgrade.php');
}else{
echo "You don't have enough points";
}
?>
升級代碼工作正常(只是因為我需要添加一個時間/日期。我想要“'用戶名'的最后一個升級到[PRO1]”的代碼在這段代碼中:
<?php
require("dbc.php");
$query = mysql_query("select * from users WHERE rights='[PRO1]' order by right DESC limit 1") or die(mysql_error());
while($array = mysql_fetch_array($query)) {
echo "{$array['username']}<br>";
}
?>was the last to upgrade to:
<?php
require("dbc.php");
$query = mysql_query("select * from users WHERE rights='[PRO1]' order by rights DESC limit 1") or die(mysql_error());
while($array = mysql_fetch_array($query)) {
echo "{$array['rights']}<br>";
}
?>
但是那段代碼給了我這個錯誤: You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near 'DESC limit 1' at line 1
You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near 'DESC limit 1' at line 1
order by right
必須在第二個代碼塊的第一個查詢中order by rights
。
該查詢無法告訴您最后一個用戶升級到rights='[PRO1]'
。 那只是一個字符串字段。 您需要某種日期時間/時間戳字段,該字段在用戶權限更改時更新,您可以通過該字段進行排序。
您也不需要進行2次查詢。 你有兩個查詢做同樣的事情。
做就是了:
SELECT username FROM users WHERE rights='[PRO1]' ORDER BY update_timestamp DESC LIMIT 1
其中update_timestamp
是權限更改時更新的字段。
原因是因為right
是一個二手關鍵字,你需要一個回擊來解決這個問題:
喜歡 :
select * from `users` WHERE rights='[PRO1]' order by `rights` DESC limit 1
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.