Mysql SQL不在查询中

Mysql SQL不在查询中,mysql,sql,subquery,localized,notin,Mysql,Sql,Subquery,Localized,Notin,有人能帮我处理这个MySQL查询吗 SELECT p.ProductID, p.StoreID, p.DiscountPercentage FROM Products p WHERE p.IsSpecial = 1 AND p.SpecialDate >= date_sub(now(),interval 15 minute) AND p.DiscountPercentage >= ?DiscountPercentage AND

有人能帮我处理这个MySQL查询吗

SELECT p.ProductID, 
       p.StoreID, 
       p.DiscountPercentage 
 FROM Products p 
WHERE p.IsSpecial = 1 
  AND p.SpecialDate >= date_sub(now(),interval 15 minute) 
  AND p.DiscountPercentage >= ?DiscountPercentage 
  AND p.ProductID NOT IN (SELECT lf.LiveFeedID 
                            From LiveFeed lf 
                           WHERE p.ProductID = lf.ProductID 
                             AND lf.DateAdded >= date_sub(now(),interval 30 day)) 
  AND p.StoreID NOT IN (SELECT lf.LiveFeedID 
                          From LiveFeed lf 
                         WHERE p.StoreID = lf.StoreID 
                           AND lf.DateAdded >= date_sub(now(),interval 6 hour)) 
ORDER BY p.StoreID, p.DiscountPercentage DESC

我正在尝试加入ProductID在过去30天不在livefeed表中,storeid在过去6小时不在livefeed表中,但它似乎不起作用。知道我做错了什么吗?

乍一看,第一个子查询应该选择
ProductID
,而不是
LiveFeedID
,第二个子查询应该选择
StoreID
而不是
LiveFeedID

<,第一个子查询应该选择
ProductID
,而不是
LiveFeedID
,第二个子查询应该选择
StoreID
而不是
LiveFeedID

我太晚了:

  SELECT p.ProductID, 
         p.StoreID, 
         p.DiscountPercentage 
    FROM Products p 
   WHERE p.IsSpecial = 1 
     AND p.SpecialDate >= date_sub(now(),interval 15 minute) 
     AND p.DiscountPercentage >= ?DiscountPercentage 
     AND p.ProductID NOT IN (SELECT lf.productid
                               FROM LIVEFEED lf
                              WHERE lf.DateAdded >= DATE_SUB(NOW(), INTERVAL 30 DAY)) 
     AND p.storeid NOT IN (SELECT lf.storeid
                             FROM LIVEFEED lf
                            WHERE lf.DateAdded >= DATE_SUB(NOW(), INTERVAL 6 HOUR)) 
ORDER BY p.StoreID, p.DiscountPercentage DESC
您正在对相关子查询使用EXISTS语法

我想为每家商店争取最高折扣

在这种情况下,请使用:

  SELECT p.StoreID, 
         MAX(p.DiscountPercentage)
    FROM Products p 
   WHERE p.IsSpecial = 1 
     AND p.SpecialDate >= date_sub(now(),interval 15 minute) 
     AND p.DiscountPercentage >= ?DiscountPercentage 
     AND p.ProductID NOT IN (SELECT lf.productid
                               FROM LIVEFEED lf
                              WHERE lf.DateAdded >= DATE_SUB(NOW(), INTERVAL 30 DAY)) 
     AND p.storeid NOT IN (SELECT lf.storeid
                             FROM LIVEFEED lf
                            WHERE lf.DateAdded >= DATE_SUB(NOW(), INTERVAL 6 HOUR)) 
GROUP BY p.storeid
ORDER BY p.StoreID, p.DiscountPercentage DESC
我太晚了:

  SELECT p.ProductID, 
         p.StoreID, 
         p.DiscountPercentage 
    FROM Products p 
   WHERE p.IsSpecial = 1 
     AND p.SpecialDate >= date_sub(now(),interval 15 minute) 
     AND p.DiscountPercentage >= ?DiscountPercentage 
     AND p.ProductID NOT IN (SELECT lf.productid
                               FROM LIVEFEED lf
                              WHERE lf.DateAdded >= DATE_SUB(NOW(), INTERVAL 30 DAY)) 
     AND p.storeid NOT IN (SELECT lf.storeid
                             FROM LIVEFEED lf
                            WHERE lf.DateAdded >= DATE_SUB(NOW(), INTERVAL 6 HOUR)) 
ORDER BY p.StoreID, p.DiscountPercentage DESC
您正在对相关子查询使用EXISTS语法

我想为每家商店争取最高折扣

在这种情况下,请使用:

  SELECT p.StoreID, 
         MAX(p.DiscountPercentage)
    FROM Products p 
   WHERE p.IsSpecial = 1 
     AND p.SpecialDate >= date_sub(now(),interval 15 minute) 
     AND p.DiscountPercentage >= ?DiscountPercentage 
     AND p.ProductID NOT IN (SELECT lf.productid
                               FROM LIVEFEED lf
                              WHERE lf.DateAdded >= DATE_SUB(NOW(), INTERVAL 30 DAY)) 
     AND p.storeid NOT IN (SELECT lf.storeid
                             FROM LIVEFEED lf
                            WHERE lf.DateAdded >= DATE_SUB(NOW(), INTERVAL 6 HOUR)) 
GROUP BY p.storeid
ORDER BY p.StoreID, p.DiscountPercentage DESC

啊,你说得对!我知道我错过了一些简单的事情!谢谢啊,你说得对!我知道我错过了一些简单的事情!谢谢非常感谢。有没有一种简单的方法可以在查询中只允许一个storeID?只有1个?将
LIMIT 1
钉到底。但我需要更多地了解如何确定返回哪个特定的storeid……好吧,现在的查询将返回来自同一个商店的多个产品id。我需要对查询中的每个storeid设置1的限制。我想为每家店争取最高折扣。谢谢!有没有一种简单的方法可以在查询中只允许一个storeID?只有1个?将
LIMIT 1
钉到底。但我需要更多地了解如何确定返回哪个特定的storeid……好吧,现在的查询将返回来自同一个商店的多个产品id。我需要对查询中的每个storeid设置1的限制。我正在为每家商店争取最高折扣。根据您的评论更新答案根据您的评论更新答案