2011-04-27 101 views
0

該查詢有什麼問題?mysql查詢中的語法錯誤

SELECT 
    null, 
    DISTINCT(email), 
    2, 
    SUBSTRING(MD5(RAND()) FROM 1 FOR 32) 
    from users where sex = 'male' 

你有一個錯誤的SQL語法;請檢查與您的MySQL服務器版本相對應的手冊,以在'DISTINCT(電子郵件)'附近使用正確的語法,

+2

爲什麼選擇'null'? – alex 2011-04-27 08:22:41

+0

交換'null'和'DISTINCT(email)'的順序將會起作用。例如 'DISTINCT(email),null,'。 'DISTINCT'應該出現在任何列名之前 – 2011-04-27 08:28:01

+0

@Shakti Singh:'DISTINCT(email)'應該等同於'DISTINCT(email)',應該等同於'DISTINCT email'。括號不是必需的,在這種情況下不會有任何其他目的。 – 2011-04-27 08:32:51

回答

0

使用不同的意圖是聲明應刪除重複的行。不同的是選擇

SELECT DISTINCT 
    null, 
    email, 
    2, 
    SUBSTRING(MD5(RAND()) FROM 1 FOR 32) 
FROM users 
WHERE sex = 'male' 

我猜下降重複行的前面的查詢失敗,因爲它包含一個隨機列值後立即使用。然而,不同的電子郵件地址,可以在子查詢中被選中,其餘列添加算賬:

SELECT DISTINCT 
    null, 
    email, 
    2, 
    SUBSTRING(MD5(RAND()) FROM 1 FOR 32) 
FROM (
     SELECT DISTINCT email 
     FROM users 
     WHERE sex = 'male' 
) males 

MySQL select syntax