mysql - 使用一个 MySQL 查询从两个表中获取数据?

标签 mysql

我正在构建一个社交网络页面,并希望在一个供稿页面上获取所有用户的事件。

我有一个评论表:

user_id    comment                date
1          "Hi...."               24 March 2013
2          "Hello..."             25 March 2013
1          "Another comment..."   26 March 2013

还有一个点赞表:

user_id    id_of_liked_item     date
1          101                  24 March 2013 
1          145                  25 March 2013

是否可以执行单个查询以将这些数据放入按日期排序的所有用户事件的数组中?如果是这样,该查询看起来像什么?我的阵列需要看起来像这样:

$activity = array(
    array(
        "type"=>"comment",
        "content"=>"Comment goes here"
    ),
    array(
        "type"=>"like",
        "item_id"=>345,
    )
)

我非常擅长处理 php 数据,所以我可能不需要太多组织数组的帮助,但我的问题主要是首先如何从数据库中获取数据。谢谢

最佳答案

是的,UNION 是可行的方法:

SELECT 'comment' AS Type, Comment AS Content, NULL as Item_ID, Date
  FROM Comments
  WHERE User_Id = 1
UNION ALL SELECT 'like', NULL, id_of_liked_item, Date
  FROM Likes
  WHERE User_Id = 1

这会给你一个看起来像这样的结果集:

Type    Content            Item_ID Date
------- ------------------ ------- -------------
comment Hi....             null    24 March 2013
comment Another comment... null    26 March 2013
like    null               101     24 March 2013
like    null               145     25 March 2013

你可以从那里拿走它。

关于mysql - 使用一个 MySQL 查询从两个表中获取数据?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15641036/

相关文章:

mysql - 从 mysql CLI 创建带有破折号名称的数据库

php - Laravel 如何在一个查询中从多个表中删除一行

mysql - 仅使用一个选择在随机排序的子查询上重写分组依据

mysql - 使用 update 语句修复 mysql 表中的重复字段

php - 在 MYSQL 中使用单个查询获取 3 个不同 SUM 的 "best"方法是什么

php - 登录用户在 PHP session 中切换到另一个用户

mysql - MySQL服务无法启动

php - 如何在drupal 7中实现添加日期表达式

php - 使用该行的 id 编辑表格的特定行

php - WordNet 数据库上的 mysql 查询工作正常,只是停止工作