Mysql 我的SQL查询有什么问题?
我试图将这些查询实现到我的sql中,但是我似乎没有发现我做错了什么。有人能帮忙吗Mysql 我的SQL查询有什么问题?,mysql,sql,Mysql,Sql,我试图将这些查询实现到我的sql中,但是我似乎没有发现我做错了什么。有人能帮忙吗 Application(Id, Name, ShortName) Uses(ApplicationId, ModuleId) Module(Id, Name, LinesOfCode, Status) # The status of a module can be alpha or beta. # An alpha module is usually an early release with more # ris
Application(Id, Name, ShortName)
Uses(ApplicationId, ModuleId)
Module(Id, Name, LinesOfCode, Status)
# The status of a module can be alpha or beta.
# An alpha module is usually an early release with more
# risk that there is an error than for a beta release.
Function(Id, Name, ModuleId, LinesOfCode)
列出所有不使用状态为alpha的模块的应用程序
我的问题是:
SELECT *
FROM Application INNER JOIN Uses ON Application.Id = ApplicationId
WHERE ModuleId IS NOT (Select Module.Id FROM Module WHERE Status = "Alpha")
列出使用状态为alpha的模块和状态为beta的模块的所有应用程序
我的问题是:
SELECT *
FROM Application INNER JOIN Uses ON Application.Id = ApplicationId
WHERE ModuleId = (SELECT Module.Id FROM Module WHERE Status = "Beta")
AND ModuleId = (SELECT Module.Id FROM Module WHERE Status = "Alpha");
你可以在MySQL中没有函数
SELECT *
FROM Application INNER JOIN Uses ON Application.Id = ApplicationId
WHERE ModuleId NOT IN (Select Module.Id FROM Module WHERE Status = "Alpha")
及
看到您的这个查询,您可能会得到多个id,因此您应该在中使用,而不是=
你可以在MySQL中没有函数
SELECT *
FROM Application INNER JOIN Uses ON Application.Id = ApplicationId
WHERE ModuleId NOT IN (Select Module.Id FROM Module WHERE Status = "Alpha")
及
看到您的这个查询,您可能会得到多个id,因此您应该在中使用,而不是=
试试这个
SELECT *
FROM Application INNER JOIN Uses ON Application.Id = ApplicationId
WHERE ModuleId NOT IN (Select Module.Id FROM Module WHERE Status = "Alpha")
SELECT *
FROM Application INNER JOIN Uses ON Application.Id = ApplicationId
WHERE ModuleId IN (SELECT Module.Id FROM Module WHERE Status = "Beta")
AND ModuleId IN (SELECT Module.Id FROM Module WHERE Status = "Alpha");
试试这个
SELECT *
FROM Application INNER JOIN Uses ON Application.Id = ApplicationId
WHERE ModuleId NOT IN (Select Module.Id FROM Module WHERE Status = "Alpha")
SELECT *
FROM Application INNER JOIN Uses ON Application.Id = ApplicationId
WHERE ModuleId IN (SELECT Module.Id FROM Module WHERE Status = "Beta")
AND ModuleId IN (SELECT Module.Id FROM Module WHERE Status = "Alpha");
使用下面的查询
SELECT *
FROM Application A
INNER JOIN Uses U ON (A.Id = U.ApplicationId)
INNER JOIN Module M ON (A.Id = M.Id)
WHERE M.Status IN ('Beta','Alpha');
它给出了所有列。您可以使用alias和pull所需列使用下面的查询
SELECT *
FROM Application A
INNER JOIN Uses U ON (A.Id = U.ApplicationId)
INNER JOIN Module M ON (A.Id = M.Id)
WHERE M.Status IN ('Beta','Alpha');
它给出了所有列。您可以使用alias并拉入所需列您的问题是什么?如果查询不起作用,那么样本数据和期望的结果会有所帮助,一个问题也会有帮助。请尝试:WHERE ModuleId不在选择模块中。Id FROM Module WHERE Status=alpha您的问题是什么?如果查询不起作用,那么样本数据和所需结果将有所帮助,就像单个问题一样。请尝试:WHERE ModuleId不在Select Module.Id FROM Module WHERE Status=Alpha中