mysql从两个表中选择,其中user是所有者

时间:2014-09-09 11:51:50

标签: mysql

从两个表中选择时,我的MySQL知识有限。

我所拥有的是一个包含用户上传文件详情的表格,例如它包含以下列:

id, fileId, userId, uploadTime, fileName

我还有另一个表,其中包含有关谁下载文件以及何时下载的信息,它包含以下内容:

id, userId, fileId, downloadTime

我需要做的是计算特定用户文件的下载次数,但我不知道怎么会这样:

SELECT * FROM downloadTable WHERE fileId IN (SELECT fileId, userId FROM userTable WHERE userId = 5)

我是在正确的轨道上吗?

2 个答案:

答案 0 :(得分:0)

SubQuery应该只返回一个字段。在您的情况下,它是fileId。将SQL更改为:

SELECT * FROM `downloadTable`
   WHERE `fileId` IN (
      SELECT `fileId` FROM `userTable` WHERE `userId` = 5
   )

这将选择fileIduserId所有5所拥有的已下载文件。

答案 1 :(得分:0)

您可以使用JOIN:

SELECT d.*
FROM downloadTable d
INNER JOIN userTable u
    ON d.userId = u.userId
WHERE u.userId = 5

这将链接两个表中的记录,使得userId列对于此查询两者都是一致的。然后你只需在userId上指定一个约束,它也会溢出到downloadsTable

这比子查询更好,因为它运行得更快 - 在大多数情况下,JOIN是您在查询时想要链接数据的方式。