php - MySql ORDER BY 多列 IF AND

标签 php mysql

因此,我为特定查询连接了两个表。经过复杂的 SELECT 语句后,该表将大致如下所示: $myid = 3

PostID | FromUserID | To User ID|Date     | PostSeen | NumLikes  |SeenLike
61     |     48     |     3     | 5/11/13 |    1     |     1     |  1
59     |     3      |     3     | 4/11/13 |    1     |     1     |  0
58     |     3      |     3     | 4/11/13 |    1     |     1     |  1
25     |     47     |     3     | 3/11/13 |    1     |     2     |  0
53     |     56     |     3     | 2/11/13 |    0     |     3     |  1
21     |     3      |     55    | 1/11/13 |    1     |     0     |  null
20     |     56     |     3     | 30/10/13|    1     |     0     |  null
18     |     47     |     3     | 29/10/13|    0     |     0     |  null

If NumLikes is equal to 0 then the SeenLike column is null. The PostSeen will always be 0 or 1. Ive put the date in a simplified format here, but its proper DateTimed.

Essentially, I want do something that is the equivalent of

if(FromUserID == $myid && NumLikes > 0){
ORDER BY SeenLike ASC, Date DESC
}
if (FromUserID != $myid) {
ORDER BY PostSeen ASC, Date DESC
}

(我知道这是完全错误的,它只是为了模糊地说明我的目标) 这样它就会对结果进行排序,如下所示:

PostID | FromUserID | To User ID|Date     | PostSeen | NumLikes  |SeenLike
59     |     3      |     3     | 4/11/13 |    1     |     1     |  0
25     |     47     |     3     | 3/11/13 |    1     |     2     |  0
53     |     56     |     3     | 2/11/13 |    0     |     3     |  1
18     |     47     |     3     | 29/10/13|    0     |     0     |  null
61     |     48     |     3     | 5/11/13 |    1     |     1     |  1
58     |     3      |     3     | 4/11/13 |    1     |     1     |  1
21     |     3      |     55    | 1/11/13 |    1     |     0     |  null
20     |     56     |     3     | 30/10/13|    1     |     0     |  null

我该如何去做呢?我已经尝试过 IF 和 CASE,但到目前为止还没有成功。也希望对任何答案进行解释! 感谢您的帮助!

最佳答案

您可以创建两个子查询,然后对它们进行 UNION。第一个子查询将具有“WHERE FromUserID = $myid AND NumLikes > 0 ORDER BY SeenLike ASC, Date DESC”,第二个子查询“WHERE FromUserID != $myid ORDER BY PostSeen ASC, Date DESC”。

关于php - MySql ORDER BY 多列 IF AND,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/19795836/

相关文章:

javascript - 在基于 PHP 的网站上呈现 Cookie

php - 当它是语言特定字符时返回第一个字母

php存储上传到表的路径并显示

php - 如何在ajax中搜索名称并从数据库中获取结果

mysql 仅当存在时更新 不插入

php - SQL查询从另一个表获取数据

PHP:将未知数量的参数从数组传递给方法

c# - 在 C# 中用于 MySQL 的 MARS

php - 使用 mysql PDO 插入和删除标签

mysql - 在选择MySQL中选择