PHP-MYSQL中SQL语句的排序

PHP-MYSQL中SQL语句的排序,php,mysql,sql,select,sql-order-by,Php,Mysql,Sql,Select,Sql Order By,我有一个名为email的表,我从中获取电子邮件。 表中的电子邮件按此顺序排列 asda@gmaila.omc 123@dsad.com name@gmail.com 现在如果我提出这个问题 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 nam

我有一个名为email的表,我从中获取电子邮件。 表中的电子邮件按此顺序排列

  • asda@gmaila.omc

    123@dsad.com
    name@gmail.com

  • 现在如果我提出这个问题

    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子句中的参数得到结果
    如果您注意到我在中提到的
    asda@gmaila.omc
    首先, 我认为按条款订货对我没有帮助
    解决此问题的任何其他方法?

    一种可能的方法是使用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');
    
    选择*
    从电子邮件
    WHERE字段(电子邮件,'asda@gmaila.omc', '123@dsad.com', 'name@gmail.com')  0 
    按字段订购(电子邮件,'asda@gmaila.omc', '123@dsad.com', 'name@gmail.com');
    

    由于
    FIELD
    返回0,如果它的第一个参数不等于任何其他参数,
    FIELD(str,'aaa','bbb'…)0
    子句大致相当于
    str IN('aaa','bbb')
    表按此顺序启用您可能有RowID或时间戳吗?您的排序依据是什么?@astater它既有时间戳又有行ID,但我想根据in语句中提供的参数进行排序。@raina660w in和where子句现在在哪里?它在
    LIMIT
    中。实际上,您检查过了吗?更新后的答案有效,0做了什么?我知道这等于=用解释再次更新答案。)简而言之,
    FIELD
    用于排序(显然)和从结果集中过滤出不需要的字符串(在上一版本中,我对
    LIMIT 3
    子句也做了同样的操作)。好奇
    FIELD
    是否会在
    email
    列上使用索引,或者这是否等于seq。扫描