2011-04-27 91 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