php - MySQL 将表与结果中的原始信息连接起来

标签 php mysql loops join

我有 2 个具有相同字段的表

  1. 视频(id、user_id、category_id、时间戳)
  2. 每月视频数(id、user_id、category_id、时间戳)

现在我的问题是,我可以在字段 user_id 上连接这两个表,以便获得“原始信息”(即实际来自哪个表结果的信息)吗?我需要知道何时使用 PHP 循环遍历 MySQL 结果,如下所示:

forach($results as $result) {
    $entry_id = $result->id;
    // this id is from table videos or monthly_videos ???
    //if from table videos do something
    //if from table monthly_videos do something else
}

如果该特定结果来自表“videos”或表“monthly_videos”。

为什么我需要这个是因为虽然 id 是自动递增的,但它仅对该表来说是唯一的。 id 为 5 的用户可以在表“videos”中拥有 id 2 的条目,但他也可以在表 Monthly_videos 中拥有 id 2 的条目 - 所有字段都是如此(信息可以重复)。实际上没关系,我不想删除重复的字段 - 我只需要知道它来自哪个表?

我唯一的解决方案是单独查询每个表并创建一个包含所有信息的多维数组,然后循环遍历该数组,但我想知道是否有一种方法可以直接使用 MySQL 来执行此操作并仅循环结果?

最佳答案

使用 UNION 和字符串值来标记起源:

SELECT 'videos' As origin, id, user_id, category_id, timestamp FROM videos
UNION
SELECT 'monthly_videos', id, user_id, category_id, timestamp FROM monthly_videos

正如 Arth 在评论中提到的,

SELECT 'videos' As origin, id, user_id, category_id, timestamp FROM videos
UNION ALL
SELECT 'monthly_videos', id, user_id, category_id, timestamp FROM monthly_videos

在获得相同结果的同时可以获得更好的查询性能。

关于php - MySQL 将表与结果中的原始信息连接起来,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/25183654/

相关文章:

java - 程序布局 - 通过 System.in.read 创建适当大小的数组

python - Python 3.4 中可以选择迭代器的起点吗?

javascript - 如何使用 angularjs 从 localStorage 调用 "User ID"变量到 PHP?

php - 使用 PHPunit 删除构造函数中的依赖项

java - 不同 DAO 中的 Spring 事务无论如何都不起作用?

mysql - Spring和MySQL存储过程

r - 使用 lpsolve 在 R 中进行线性规划

php - 从 mysql 打印的每一行都应该是彩色的

php - 通过 json_encode() 传递 PHP 字符串(代表 JS 函数)

php - MySQL 连接功能不起作用?