這是一個奇怪的問題,所以我的標題就像奇怪。MySql&PHP:如何找到哪個行在CSV列表的首位有一個項目?
這是一個投票應用程序,所以我有一張名爲選票的表,它有兩個重要字段:用戶名和選票。字段選票是一個VARCHAR,但它基本上將25個ID(1-200的數字)列表存儲爲CSV。例如,它可能是:
22,12,1,3,4,5,6,7,...
而另一個可能
3,4,12,1,4,5,...
等。
因此,給定一個id(比方說12),我想找到哪個行(或用戶名)有在該領導點的id。所以在我們上面的例子中,它將是第一個用戶,因爲他在第二個位置有12個,而第二個用戶在第三個位置。有可能多人可能擁有12個領先位置(例如,如果用戶#3和#4在#1中有)並且有可能沒有人可能排名第12。
我還需要做相反的處理(誰在最糟糕的地方),但我想如果我能找出一個問題,其餘的很容易。
我想使用最少數量的查詢和語句來做到這一點,但對於我來說,我看不出如何。
我想到的最簡單的解決方案是遍歷表中的所有用戶,並跟蹤誰在領先地點有一個id。這對我來說現在可以正常工作,但用戶數量可能呈指數增長。
其他想法我是做這樣的查詢:
select `username` from `ballots` where `ballot` like '12,%'
,如果返回的結果,我做了,因爲位置1的領先位置。但是,如果返回0結果我會怎麼做:
select `username` from `ballots` where `ballot` like '*,12,%'
其中*是通配符,將一個號碼,一個號碼。(不像%)相匹配。但我不知道這是否可以實現。
無論如何,有沒有人有任何建議如何最好地做到這一點?
感謝
哇,完美的工作。謝謝! 我應該學習MySQL的功能.. – encee 2009-08-27 04:03:12