在PHP MYSQL中排序SQL语句

时间:2014-02-17 19:03:22

标签: php mysql sql select sql-order-by

我有一个名为email的表,我从中获取电子邮件。 该表格按此顺序发送电子邮件

  1. asda@gmaila.omc

    123@dsad.com
    name@gmail.com

  2. 现在如果我进行此查询

    SELECT * FROM email WHERE (email IN ( 'asda@gmaila.omc' ,'123@dsad.com' ,  'name@gmail.com' )) AND email!='' LIMIT 3
    

    我明白了

    123@dsad.com

    asda@gmaila.omc

    name@gmail.com

    但我希望根据IN clause中的参数得到结果 如果您首先注意到IN我提到asda@gmaila.omc, 我不认为order by子句会帮助我 还有其他解决这个问题的方法吗?

1 个答案:

答案 0 :(得分:3)

一种可能的方法是使用FIELD() MySQL函数:

   SELECT * 
     FROM email
    WHERE FIELD(email, 'asda@gmaila.omc', '123@dsad.com', 'name@gmail.com') <> 0 
 ORDER BY FIELD(email, 'asda@gmaila.omc', '123@dsad.com', 'name@gmail.com');

如果FIELD的第一个参数不等于任何其他参数,则返回0,FIELD(str, 'aaa', 'bbb'...) <> 0子句大致相当于str IN ('aaa', 'bbb')