php - PHP MYSQL 中的 SQL 语句排序

标签 php mysql sql select sql-order-by

我有一个名为 email 的表,我可以从中获取电子邮件。 该表按此顺序包含电子邮件

  1. [email protected]

    [email protected]
    [email protected]

现在如果我进行此查询

SELECT * FROM email WHERE (email IN ( '<a href="https://stackoverflow.com/cdn-cgi/l/email-protection" class="__cf_email__" data-cfemail="29485a4d48694e44484045480746444a" rel="noreferrer noopener nofollow">[email protected]</a>' ,'<a href="https://stackoverflow.com/cdn-cgi/l/email-protection" class="__cf_email__" data-cfemail="1223202152766173763c717d7f" rel="noreferrer noopener nofollow">[email protected]</a>' ,  '<a href="https://stackoverflow.com/cdn-cgi/l/email-protection" class="__cf_email__" data-cfemail="e98788848ca98e84888085c78a8684" rel="noreferrer noopener nofollow">[email protected]</a>' )) AND email!='' LIMIT 3

我明白了

[email protected]

[email protected]

[email protected]

但我想根据 IN clause 中的参数获得结果 如果您注意到 IN我提到<a href="https://stackoverflow.com/cdn-cgi/l/email-protection" class="__cf_email__" data-cfemail="660715020726010b070f0a0748090b05" rel="noreferrer noopener nofollow">[email protected]</a>第一的, 我认为 order by 条款对我没有帮助 还有其他方法可以解决这个问题吗?

最佳答案

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

   SELECT * 
     FROM email
    WHERE FIELD(email, '<a href="https://stackoverflow.com/cdn-cgi/l/email-protection" class="__cf_email__" data-cfemail="cdacbea9ac8daaa0aca4a1ace3a2a0ae" rel="noreferrer noopener nofollow">[email protected]</a>', '<a href="https://stackoverflow.com/cdn-cgi/l/email-protection" class="__cf_email__" data-cfemail="b8898a8bf8dccbd9dc96dbd7d5" rel="noreferrer noopener nofollow">[email protected]</a>', '<a href="https://stackoverflow.com/cdn-cgi/l/email-protection" class="__cf_email__" data-cfemail="1f717e727a5f78727e7673317c7072" rel="noreferrer noopener nofollow">[email protected]</a>') <> 0 
 ORDER BY FIELD(email, '<a href="https://stackoverflow.com/cdn-cgi/l/email-protection" class="__cf_email__" data-cfemail="a7c6d4c3c6e7c0cac6cecbc689c8cac4" rel="noreferrer noopener nofollow">[email protected]</a>', '<a href="https://stackoverflow.com/cdn-cgi/l/email-protection" class="__cf_email__" data-cfemail="2b1a19186b4f584a4f05484446" rel="noreferrer noopener nofollow">[email protected]</a>', '<a href="https://stackoverflow.com/cdn-cgi/l/email-protection" class="__cf_email__" data-cfemail="bdd3dcd0d8fddad0dcd4d193ded2d0" rel="noreferrer noopener nofollow">[email protected]</a>');

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

关于php - PHP MYSQL 中的 SQL 语句排序,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21837213/

相关文章:

php - MySQL和PHP基于时间的频率

mysql - 当我尝试在 MySQL 中使用 JOIN 时收到 NULL

php - 如何在 MySQL 的记录生成中自动存储当前系统时间?

php - 允许用户使用 php 和 mysql 在您的数据库中创建表的最佳方法是什么?

php - 如何使用不在同一目录中的 PDO 打开 sqlite3 数据库?

php - mysql 查询中区分大小写的表名

MySQL 在表连接中不使用索引

php - Mysql多选排除行

mysql - 如何拆分字符串并与MySQL中字符串是否存在的列进行比较

php - User 类的对象无法转换为字符串