2016-12-12 46 views
0

我有以下數據的MySQL表:獲取從數據庫表中相應列最小值行屬性

ID,PERSON_NAME,SCORE,DATE

我想編寫一個查詢,我可以獲得最小SCORE值和相應的PERSON_NAME值。我試過以下查詢:

min_query = "SELECT PERSON_NAME, MIN(SCORE) FROM HTMLSCORES" 

cursor.execute(min_query) 

result = cursor.fetchone() 
name = result[0] 
min_score = result[1] 

但是,名稱值始終是相同的,似乎是表中的第一個條目。我想獲得MIN(SCORE)的相應PERSON_NAME值。我該如何着手編寫該查詢?

+0

sql會是'SELECT PERSON_NAME FROM HTMLSCORES WHERE SCORE =(SELECT MIN(SCORE)FROM HTMLSCORES)' –

+0

這會給我PERSON_NAME和SCORE值嗎? – FlameDra

回答

1

試試這個:在子查詢

SELECT PERSON_NAME, SCORE 
FROM HTMLSCORES 
WHERE SCORE = 
(SELECT MIN(SCORE) 
FROM HTMLSCORES) 

先看看。我們可以使用MIN函數從您的表中找到MIN分數。然後,在主查詢中,我們選擇行中的分數與子查詢分數相匹配的行或行。

您的第一次嘗試不起作用,因爲查詢是獨立查看人名和得分。以這種方式編寫查詢將會將它們鏈接在一起。

1
min_query = "SELECT PERSON_NAME, MIN(SCORE) AS 'Min_Score' FROM HTMLSCORES GROUP BY PERSON_NAME ORDER BY PERSON_NAME" 

這將返回所有PERSON_NAME及其最低分數的列表。

如果你是一個特定的用戶後,知道什麼PERSON_NAME應該使用

pyPerson = 'Name Here'  
min_query = "SELECT PERSON_NAME, MIN(SCORE) AS 'Min_Score' FROM HTMLSCORES WHERE PERSON_NAME = '" + str(pyPerson) + "' GROUP BY PERSON_NAME" 

請原諒我的蟒蛇原油,但它應該工作的SQL明智的。

+0

謝謝,我不知道你可以在SQL中這樣做。 – FlameDra