2011-04-04 433 views
0

顯示包含詞語發現,發現者,發現,發現和發現摘要中的20個獎項的標題和獎勵數量。使用SQL查找獨特價值

我的查詢:

SELECT title, count(award), abstract 
FROM poop 
ORDER BY award 
WHERE abstract LIKE discov% 
LIMIT 20 

ike table

它不喜歡我的where子句...有人嗎? (在mySQL中)

+0

我們要求學術誠信,用'homework'標記它。如果這不適用於您,道歉,請忽略評論。 – RichardTheKiwi 2011-04-04 23:10:04

+0

我沒有看到'抽象'列... – bdares 2011-04-05 01:34:12

回答

1

此查詢假設每個pi有不同的獎勵。

SELECT COUNT(distinct award), pi 
FROM [tablename] 
GROUP BY pi 
ORDER BY COUNT(distinct award) DESC 

擁有最多獎項的州。

SELECT TOP 20 COUNT(distinct award), state 
FROM [tablename] 
GROUP BY state 
ORDER BY COUNT(distinct award) 

如果您不使用T-SQL,請刪除TOP 20。

+0

第二個sql命令在mysql中不起作用... – Jshee 2011-04-04 22:48:29

+1

@woopie:你沒有提到你正在使用哪個RDBMS。注意答案中的警告?刪除'TOP 20'並使用'LIMIT 0,20' – 2011-04-04 22:56:57

2

你缺少在你的標準的單引號,你只是在尋找一個與「discov」,你的ORDER BY子句是在錯誤的地方開始話,您使用的是COUNT()表達不進行分組由其他非集合領域。爲了解決這個問題並查找包含「discov」字樣,使用此:

SELECT title, abstract, count(award), 
FROM table 
WHERE abstract 
LIKE '%discov%' 
GROUP BY title, abstract 
ORDER BY count(award) 
LIMIT 20 

如果你真的沒有意思只是看開頭「discov」的話,那麼用這個:

SELECT title, abstract, count(award), 
FROM table 
WHERE abstract 
LIKE 'discov%' 
GROUP BY title, abstract 
ORDER BY count(award) 
LIMIT 20 
+0

這給phpmyadmin一個錯誤:'你的SQL語法有錯誤;檢查與您的MySQL服務器版本相對應的手冊,以便在第4行'WHERE abstract LIKE'discov%'LIMIT 20'附近使用正確的語法。 – Jshee 2011-04-05 01:17:43

+0

這不起作用。 – Jshee 2011-04-05 01:19:21

+0

@woopie我錯過了你的訂單條款起初在錯誤的地方;我已經糾正了這一點。現在就試試。 – 2011-04-05 01:34:03

1
各地discov

失蹤'和ORDER BYWHERE被反轉:

SELECT title, count(award) AS count_award, abstract 
    FROM table 
WHERE abstract LIKE 'discov%' 
GROUP BY title, abstract 
ORDER BY count_award DESC 
LIMIT 20 
+0

這會引發錯誤。 – Jshee 2011-04-05 01:33:23

+0

和什麼是錯誤信息? – manji 2011-04-05 01:35:45

+0

你的SQL語法有錯誤;請檢查與您的MySQL服務器版本相對應的手冊,以便在第2行 – Jshee 2011-04-05 01:47:03