你的數(shù)據(jù)庫(kù)設(shè)計(jì)不合理,當(dāng)你有新的game的時(shí)候又新建一張表,這樣程序會(huì)變得非常復(fù)雜,正確的方法應(yīng)該是只建立一個(gè)game表,字段有ID,GID,UID,money,其中GID為游戲的編碼(1、2、3、……),如果是這樣表結(jié)構(gòu),SQL你自己已經(jīng)會(huì)寫(xiě)了。
創(chuàng)新互聯(lián)建站專注為客戶提供全方位的互聯(lián)網(wǎng)綜合服務(wù),包含不限于成都網(wǎng)站設(shè)計(jì)、成都網(wǎng)站制作、龍華網(wǎng)絡(luò)推廣、微信小程序開(kāi)發(fā)、龍華網(wǎng)絡(luò)營(yíng)銷、龍華企業(yè)策劃、龍華品牌公關(guān)、搜索引擎seo、人物專訪、企業(yè)宣傳片、企業(yè)代運(yùn)營(yíng)等,從售前售中售后,我們都將竭誠(chéng)為您服務(wù),您的肯定,是我們最大的嘉獎(jiǎng);創(chuàng)新互聯(lián)建站為所有大學(xué)生創(chuàng)業(yè)者提供龍華建站搭建服務(wù),24小時(shí)服務(wù)熱線:13518219792,官方網(wǎng)址:www.cdcxhl.com
對(duì)于你現(xiàn)在這樣麻煩的數(shù)據(jù)庫(kù)結(jié)構(gòu),可以利用視圖來(lái)實(shí)現(xiàn),建立一個(gè)視圖:
CREATE VIEW game AS
select '1' GID,UID,money from game1 UNION
select '2' GID,UID,money from game2 UNION
select '3' GID,UID,money from game3
這樣,你需要統(tǒng)計(jì)某用戶UID=uid的money總和,可以使用下面的SQL:
SELECT SUM(money) FROM game WHERE UID='uid'
你需要統(tǒng)計(jì)某用戶sname的money總和,可以使用下面的SQL:
SELECT SUM(money) FROM game WHERE UID IN (select UID from user WHERE sname='sname')
有了這個(gè)VIEW排名的SQL應(yīng)該你知道怎么做了。
SELECT * FROM table_name AS a ORDER BY a.`產(chǎn)業(yè)`,a.`市場(chǎng)份額` DESC;
表數(shù)據(jù):
海信 冰箱 0.20 1
海信 冷柜 0.20 2
海爾 冰箱 0.19 3
海爾 冷柜 0.19 4
美的 冰箱 0.18 5
美的 冷柜 0.18 6
查詢結(jié)果:
海信 冰箱 0.20 1
海爾 冰箱 0.19 3
美的 冰箱 0.18 5
海信 冷柜 0.20 2
海爾 冷柜 0.19 4
美的 冷柜 0.18 6
望采納。
SELECT * FROM table_name ORDER BY `score` DESC
就是從表中按score從高到低排序后取出的結(jié)果
這個(gè)如果想要性能的話,就用下面的sql語(yǔ)句實(shí)現(xiàn):
select orderNo from (select (@rowNum:=@rowNum+1) orderNo , userid ,pid from TABLE,(Select (@rowNum :=0) ) b )t where t.userid=2694
然后php獲得這條結(jié)果數(shù)組,取第一個(gè)元素即是排序
如果對(duì)這個(gè)sql語(yǔ)句有疑問(wèn),不明白,可以使用一個(gè)比較耗費(fèi)性能的方法:
select userid from record
執(zhí)行這條語(yǔ)句,獲得一個(gè)數(shù)組$res
遍歷前設(shè)置一個(gè)記錄排序的標(biāo)識(shí) $seq=1;
for(...){
$userid=$res['userid'];//把第seq 個(gè)位置的學(xué)號(hào)拿出來(lái),跟想要的學(xué)號(hào)比
if($userid==2694){
break;
}
$seq++;
}
//如果 這個(gè)排序標(biāo)識(shí)比結(jié)果集數(shù)組大小還大,說(shuō)明沒(méi)這個(gè)userid的記錄。
$seq就是排序
我沒(méi)有測(cè)試 你可以自己試一下
應(yīng)該把表B的score放到試卷表A ,
不然只能輸出
張三試卷1:第1名
李四試卷1:第2名
王五試卷1:第3名
陳六試卷1:第4名
這樣子
?php
mysql_connect('localhost','root','123');
mysql_select_db('lx');
mysql_query("SET?CHARACTER?SET?utf8");
mysql_query("SET?NAMES?utf8");
$arr?=?mysql_query("select?username,s?from?biaob?where?p_id?=?'1'?order?by?score?desc?");
$n?=?1;
while($a?=?mysql_fetch_array($arr)){
echo?'br'.$a['username'].'試卷1:第'.$n.'名';
$n++;
}
?
select id,integral,addtime from cos_member_vip order by integral desc,addtime asc--如果需要生成以積分為最高優(yōu)先,其次以時(shí)間為從高到低為條件生成個(gè)排名字段,可用--ROW_NUMBER() OVER ()函數(shù)