PHP / MySQL排序时,SELECT结果中的某些行的特定列具有不同的值

Ben

对复杂的标题,很抱歉,不确定如何最好地解释。

我有以下查询:

SELECT * FROM uc_posts WHERE `postinguser` = 5 AND `id` NOT IN (SELECT dwable FROM uc_redwables WHERE redwabledby = 5) 
UNION ALL 
SELECT * FROM uc_posts WHERE id IN (SELECT dwable FROM uc_redwables WHERE redwabledby = 5) 
ORDER BY time DESC LIMIT 20

该表uc_posts如下所示:

id | postinguser | time                | message |
1        5         2016-08-08 23:50:45      *
2        5         2016-08-08 23:50:35      *
3        5         2016-08-08 23:50:25      *
4        5         2016-08-08 23:50:15      *

该表uc_redwables如下所示:

id | dwable | redwabledby | time                | 
1      3          5         2016-08-08 23:51:15      

输出看起来像这样:

   id | postinguser | time                | message |
1        5            2016-08-08 23:50:45      *
2        5            2016-08-08 23:50:35      *
3        5            2016-08-08 23:50:25      *
4        5            2016-08-08 23:50:15      *

我正在尝试寻找一种方法来替换表中所选行中的时间,uc_redwables并用它对相应的行进行排序(实际上不更新中的该行uc_posts)。

这样看起来像这样:

   id | postinguser | time                | message |
3        5            2016-08-08 23:51:15      *     //time changed   
1        5            2016-08-08 23:50:45      *
2        5            2016-08-08 23:50:35      *
4        5            2016-08-08 23:50:15      *

有人可以帮忙吗?谢谢!

卡姆鲁尔·汗(Kamrul Khan)

试试这个:

SELECT 
 p.`id` as id, 
 p.`postinguser` as postinguser,
 p.`message` as message,
 case r.dwable
  when p.id then r.`time`
  else p.`time`
  end as date_time 
FROM `uc_posts` p left join `uc_redwables` r on p.id = r.dwable
WHERE p.`postinguser` = 5 
AND r.redwabledby = 5 
order by date_time desc;

这应该产生如下输出:

   id | postinguser | date_time                | message |
3        5            2016-08-08 23:51:15      *      
1        5            2016-08-08 23:50:45      *
2        5            2016-08-08 23:50:35      *
4        5            2016-08-08 23:50:15      *

本文收集自互联网,转载请注明来源。

如有侵权,请联系 [email protected] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章

显示同一列的结果,但在PHP中具有不同的值

如何在MySQL / PHP的某一列中检查是否存在具有特定值的行?

PHP / MySQL:显示列中匹配特定值的所有行

PHP中的MySQL数据排序时间

PHP:如果 ID 出现多次并且列具有特定值,则从 CSV 中删除一行

很少,我的数据库中的某些列中没有插入值。PHP MySQL HTML

在PHP中对具有多个值的多维数组进行排序

PHP MySQL,按3列的排序结果

如何使用php和mysql在一行中基于特定短语显示整个列的结果?

获取具有特定值的字段计数?:MySQL的PHP

从php中的结果集中获取特定的列值

获取数据库中具有特定值的行数?-PHP MYSQL

php如何从mysql查询中回显结果行的各个列值?

PHP通过不同的方式为我提供具有相同值的不同结果

如何将MySQL中具有相同值的行分组到php中?

通过PHP显示具有特定列值的表中的数据

SELECT * FROM table WHERE列= ??? 在PHP中具有未知数量的值?

在 PHP 中获取具有特定键格式的数组值

如何避免在 MYSQL/PHP/Javascript 中显示具有 NULL 值的列?

PHP-如何通过具有不同键的子值对数组排序?

PHP MySQL对列IF行求和具有正确的时间戳

如何在一行中获取具有相同ID但在另一列中具有不同值的数据并在php中显示到表中

排序 mysql 列 (php)

我可以隐藏表中具有特定值或特殊值(例如零)的数据吗?PHP和MySQL

Wordpress / PHP / MySql排序结果

如何使用php从mysql DB中添加特定列的所有值?

MySQL SELECT之后的行具有不同的列值

PHP:替换mySQL结果数组中的值

检查值是否具有重复项,而另一列在php的多维数组中是否不同?