gpt4 book ai didi

PHP:选择 2 个表?

转载 作者:搜寻专家 更新时间:2023-10-30 23:23:01 25 4
gpt4 key购买 nike

我有每个用户的事件页面和状态消息页面。

在事件中它包含了用户做过的事情,比如与某人成为 friend 、对图片发表评论等。

users_activities
id | uID | msg | date

在 users_statusmessages 中,我得到了用户创建的状态消息。

users_statuses
id | uID | message | date

uID 是用户的 ID。

现在我想同时选择它们并将它们合二为一。{}它们按日期 desc 排序的位置(因为两个表中的日期都是 UNIX 时间戳)。

所以类似于 WHERE uID = '$userID' ORDER BY date DESC

我希望它看起来如何的例子:

User: Today is a good day (message) (date: 1284915827) (users_statuses)
User have added as Jack as friend (msg) (date: 1284915811) (users_activities)
User: I have a hard day today (message) (date: 1284915801) (users_statuses)
User have commented on Jacks picture (msg) (date: 1284915776) (users_activities)

我应该如何正确执行此操作?

最佳答案

您需要使用 UNION 运算符:

  SELECT ua.msg, 
ua.date,
'activity' AS is_table
FROM USERS_ACTIVITIES ua
WHERE ua.uid = '{$userID}'
UNION ALL
SELECT us.message,
us.date,
'status'
FROM USERS_STATUSES us
WHERE us.uid = '{$userID}'
ORDER BY `date`

联盟

UNION 删除重复项。 UNION ALL 不会删除重复项,而且速度更快。

但是 SELECT 中每个位置的数据类型必须匹配。在提供的查询中,您可以看到在第二个位置引用了日期列。如果第一个查询和第二个查询之间的列顺序颠倒,则会出现错误。

ORDER BY 应用于标准 SQL 中 UNION 查询的结果。在 MySQL 中,这包括 LIMIT 子句。但 MySQL 还支持在 UNION 查询周围放置括号,因此您可以在 UNION 查询之前使用 ORDER BY & LIMIT。

关于PHP:选择 2 个表?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3746632/

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