从两个表中选择时,我的MySQL知识有限。
我所拥有的是一个包含用户上传文件详情的表格,例如它包含以下列:
id, fileId, userId, uploadTime, fileName
我还有另一个表,其中包含有关谁下载文件以及何时下载的信息,它包含以下内容:
id, userId, fileId, downloadTime
我需要做的是计算特定用户文件的下载次数,但我不知道怎么会这样:
SELECT * FROM downloadTable WHERE fileId IN (SELECT fileId, userId FROM userTable WHERE userId = 5)
我是在正确的轨道上吗?
答案 0 :(得分:0)
SubQuery应该只返回一个字段。在您的情况下,它是fileId
。将SQL更改为:
SELECT * FROM `downloadTable`
WHERE `fileId` IN (
SELECT `fileId` FROM `userTable` WHERE `userId` = 5
)
这将选择fileId
归userId
所有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是您在查询时想要链接数据的方式。