MYSQL - 如何从第一个表返回数组,并在一个查询中使用该数组从另一个表中选择?

时间:2012-07-21 14:08:54

标签: php mysql

我有两张桌子:

1)game_follower(存储哪个用户正在关注哪个游戏):

___________________________
| ID  | game_id | user_id |
| 1   |  1      |  1      |
| 2   |  2      |  1      |

2)视频:

__________________________________
| ID  | game_id | content | data |
| 1   |  2      |  blah   | blah |
| 2   |  1      |  blah   | blah |

我正在尝试实现一个Twitter式的跟随系统,但是我在编写执行以下操作的查询时遇到了问题:

  • 选择多个game_ids WHERE user_id =“1”
  • 从game_ids列表中选择game_id =(从第一个查询中选择的多个游戏ID)的视频

我可以使用单独的查询来执行此操作,但我被告知使用多个查询对性能有害,因此如何使用一个查询执行此操作?

3 个答案:

答案 0 :(得分:3)

试试这个

SELECT v.game_id
FROM videos v
INNER JOIN game_follower gf ON gf.game_id = v.game_id
WHERE gf.user_id = 1

答案 1 :(得分:1)

您应该使用一个查询来查看JOINs(与单独提取数据相比,这会大大提高速度)。

答案 2 :(得分:1)

$conn = new PDO(CONNECTION_DETAILS, $username, $pass);
$variable = 1;
$sql = "SELECT game_follower.game_id FROM game_follower ";
$sql .= "INNER JOIN videos ";
$sql .= "ON game_follower.game_id = videos.game_id ";
$sql .= "WHERE game_follower.user_id = :id";
$query = $conn->prepare($sql);
$query->bindParam(':id', $variable, PDO::PARAM_INT);
$query->execute();

那样的东西?