Mysql SQL检查包含特定值的一组元素

Mysql SQL检查包含特定值的一组元素,mysql,sql,Mysql,Sql,我需要写一个查询来检索所有已下订单的客户的电子邮件地址。尽管我需要排除已订购productId为1的商品的客户 Hoever当客户订购productId为1的产品时,以及订购具有不同productId的产品时,他们需要包括在内。具有不同productId的此产品也可能在同一客户的不同订单中 所以现在我有点被我的问题难住了 SELECT DISTINCT [Email] FROM [dbName].[dbo].[Users] INNER JOIN dbo.Orders on db

我需要写一个查询来检索所有已下订单的客户的电子邮件地址。尽管我需要排除已订购productId为1的商品的客户

Hoever当客户订购productId为1的产品时,以及订购具有不同productId的产品时,他们需要包括在内。具有不同productId的此产品也可能在同一客户的不同订单中

所以现在我有点被我的问题难住了

    SELECT DISTINCT [Email] FROM [dbName].[dbo].[Users]

    INNER JOIN dbo.Orders on dbo.Orders.CustomerId = dbo.Users.UserId
    INNER JOIN dbo.OrderLines on dbo.OrderLines.OrderId = Orders.OrderId

    WHERE Users.SubShopID = 1 AND OrderLines.ProductId (continue here?)
    ORDER BY Email DESC
提前谢谢

这个怎么样

SELECT DISTINCT [Email] FROM [dbName].[dbo].[Users]

INNER JOIN dbo.Orders on dbo.Orders.CustomerId = dbo.Users.UserId
INNER JOIN dbo.OrderLines on dbo.OrderLines.OrderId = Orders.OrderId

WHERE Users.SubShopID = 1 
AND OrderLines.ProductId <> 1
ORDER BY Email DESC
从[dbName].[dbo].[Users]中选择不同的[Email]
dbo.Orders.CustomerId=dbo.Users.UserId上的内部联接dbo.Orders
dbo.OrderLines.OrderId=Orders.OrderId上的内部联接dbo.OrderLines
其中Users.SubShopID=1
和OrderLines.ProductId 1
通过电子邮件订购描述
这个怎么样

SELECT DISTINCT [Email] FROM [dbName].[dbo].[Users]

INNER JOIN dbo.Orders on dbo.Orders.CustomerId = dbo.Users.UserId
INNER JOIN dbo.OrderLines on dbo.OrderLines.OrderId = Orders.OrderId

WHERE Users.SubShopID = 1 
AND OrderLines.ProductId <> 1
ORDER BY Email DESC
从[dbName].[dbo].[Users]中选择不同的[Email]
dbo.Orders.CustomerId=dbo.Users.UserId上的内部联接dbo.Orders
dbo.OrderLines.OrderId=Orders.OrderId上的内部联接dbo.OrderLines
其中Users.SubShopID=1
和OrderLines.ProductId 1
通过电子邮件订购描述

但是,如果其中一个订单行包含一个的productid,而另一个订单行包含另一个productid(属于同一客户)的产品,那么该客户的电子邮件地址是否也会包含在同一订单中(因为必须这样做),这是指在同一订单中吗?还是不同的订单?如果是不同的订单,就可以了,如果不是,请告诉我,我会更新我的代码:)是的,它们将包括在内。查询将仅排除仅订购过产品1的客户。如果客户订购了产品1和产品2,则产品1订单行将被过滤掉,但产品2订单行不会被过滤掉。@weenoid+1澄清:)不同的订单可以。它可以是相同的顺序,也可以是不同的顺序。那没关系。我以为会复杂得多。非常感谢你!但是,如果其中一个订单行包含一个productid,而另一个订单行包含另一个productid(属于同一客户)的产品,那么该客户的电子邮件地址是否也会包含在同一订单中(因为这是必须发生的)?还是不同的订单?如果是不同的订单,就可以了,如果不是,请告诉我,我会更新我的代码:)是的,它们将包括在内。查询将仅排除仅订购过产品1的客户。如果客户订购了产品1和产品2,则产品1订单行将被过滤掉,但产品2订单行不会被过滤掉。@weenoid+1澄清:)不同的订单可以。它可以是相同的顺序,也可以是不同的顺序。那没关系。我以为会复杂得多。非常感谢你!