代码之家  ›  专栏  ›  技术社区  ›  Kashif

基于使用falg-in-where子句的不同外键值的不同结果

  •  2
  • Kashif  · 技术社区  · 14 年前

    请参阅所附图片。

    alt text http://img241.imageshack.us/img241/3585/customcost.png

    你能告诉我什么查询有效吗?请忽略isDefinite和productPriceID列。

    谢谢

    2 回复  |  直到 14 年前
        1
  •  0
  •   David M    14 年前

    如果您想要一个查询,如果我正确地解释了您的问题,那么应该这样做:

    SELECT  DISTINCT t1.SupplierVenueProductID, [...]
    FROM    table t1
            LEFT JOIN
                    table t2
                    ON t1.SupplierVenueProductID = t2.SupplierVenueProductID
                    AND t2.iscustomcost = 1
    WHERE   t2.SupplierVenueProductID IS NULL
    OR      t1.iscustomcost = 1
    

    我不知道你的表名,但你自己加入。

        2
  •  0
  •   deroby    14 年前

    我对你想在这里完成的事情有点迷茫, 按你的要求行事 如果isCustomCost=1,则从SupplierVenueProductID 1返回记录3,并从SupplierVenueProductID 2返回两个记录

    想概括一下,我想你 需要 是:

    返回表中的所有行,除非存在isCustomCost=1的SupplierVenueProductID记录,否则只返回此SupplierVenueProductID的记录。

    然后它就变成了一种东西:

    SELECT t1.* 
      FROM myTable t1
     WHERE t1.isCustomCost = 1
        OR NOT EXISTs (SELECT *
                         FROM t2
                        WHERE t2.SupplierVenueProductId = t1.SupplierVenueProductId
                          AND t2.isCustomCost = 1)
    

    希望这有帮助。