Mysql 我的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

我试图将这些查询实现到我的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
# 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中