我有一个名为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 clause
中的参数得到结果
如果您首先注意到IN
我提到asda@gmaila.omc
,
我不认为order by子句会帮助我
还有其他解决这个问题的方法吗?
答案 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')
。