gpt4 book ai didi

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

转载 作者:行者123 更新时间:2023-11-28 23:27:07 25 4
gpt4 key购买 nike

抱歉,标题太复杂了,我不确定如何最好地解释。

我有以下查询:

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 *

有人可以帮忙吗?谢谢!

最佳答案

试试这个:

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 *

关于PHP/MySQL 在排序时,SELECT 结果中的某些行对特定列具有不同的值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/38840057/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com