2011-04-12 50 views
0

請有人幫我解決這個問題的正確語法。帶條件的mysql rand

我有,table1

id, int 
on, tinyint - this can be 0 or 1 
name, varchar(2000) 

從這個我想獲得具有on設置爲1

我應該使用什麼查詢10個隨機id/name

+0

錯誤是由「上」不是一個可以接受的列名稱的MySQL我覺得...(驚訝沒有人發現了!) – David19801 2011-04-12 09:45:37

+0

沒關係。你應該使用反引號來分隔你的字段名稱。既然你沒有向我們展示你到目前爲止所做的嘗試,我們無法猜測你沒有這樣做。 – 2011-04-12 09:48:04

回答

4
SELECT id, name FROM table1 WHERE `on` = 1 ORDER BY RAND() LIMIT 0,10; 
+0

啊!我錯過了極限,而且mysql也不喜歡名爲'on'的列。謝謝! – David19801 2011-04-12 09:41:47

+0

@MRW:在WHERE = 1上使用反引號,因爲on是關鍵字 – Marco 2011-04-12 09:50:43

+0

什麼是反引號?並且是他們在任何地方的不良關鍵工作清單? – David19801 2011-04-12 09:56:28

2

這應該工作:

SELECT id,name FROM table1 
WHERE `on`=1 
ORDER BY RAND() 
LIMIT 0,10 

編輯:如指出,在列可能導致不反引號語法錯誤

+0

你忘了條件。 – 2011-04-12 09:38:16

+0

@Tomalak Geret'kal:謝謝 – Marco 2011-04-12 09:39:11

+0

他正在尋找10個空間限制 - 否則是! – MRW 2011-04-12 09:40:01

2

試試這個:

SELECT id,name FROM table1 WHERE `on`=1 ORDER BY RAND() LIMIT 0,10 
+0

你忘記了結果數量的限制。 – 2011-04-12 09:41:48

+0

謝謝,編輯:) – 2011-04-12 09:42:57

0
SELECT `id`, `name` FROM `table1` 
WHERE `on` = 1 
ORDER BY RAND() 
LIMIT 0,10 

使用反引號分隔字段名稱。在這種情況下,您實際上WHERE條件,因爲「ON」是關鍵字。