【问题标题】:SQL query to return table with if exists retun price 2 else return price 1SQL 查询返回表,如果存在则返回价格 2 否则返回价格 1
【发布时间】:2016-09-14 03:36:41
【问题描述】:

我需要帮助进行查询以显示以下结果。

假设我有桌子:

表 1

ProductId   Description
1           Banana
2           Apple
3           Melon
4           Orange

表 2

ProductId   PriceNumber   Price
1           1             86
1           2             55
2           1             58
3           1             99
3           3             66
4           1             87
4           2             78

我需要显示 PriceNumber = 2,如果不存在则显示 PriceNumber = 1

想要的结果:

ProductId   Description PriceNum    Price
1           Banana      2           55
2           Apple       1           58
3           Melon       1           99
4           Orange      2           78

谢谢!

【问题讨论】:

  • 您能否解释一下为什么价格数字列中有 2 个值?
  • 产品可以有多个价格。

标签: sql if-statement join exists


【解决方案1】:

这是表格的设置:

CREATE TABLE Table1
    (`ProductId` int, `Description` varchar(6))
;

INSERT INTO Table1
    (`ProductId`, `Description`)
VALUES
    (1, 'Banana'),
    (2, 'Apple'),
    (3, 'Melon'),
    (4, 'Orange')
;


CREATE TABLE Table2
    (`ProductId` int, `PriceNumber` int, `Price` varchar(5))
;

INSERT INTO Table2
    (`ProductId`, `PriceNumber`, `Price`)
VALUES
    (1, 1, '7,86'),
    (1, 2, '3,55'), 
    (2, 1, '10,58'),
    (3, 1, '2,99'),
    (4, 1, '9,87'),
    (4, 2, '6,78')
;

这是代码中的实际答案:

SELECT  distinct(Table2.ProductId), 
        Description,
        PriceNumber, 
        Price 
FROM Table2
    INNER JOIN Table1
    ON Table1.ProductId = Table2.ProductId

WHERE (PriceNumber = 2) OR 
      (
          (Table2.ProductId not in (
                     SELECT ProductId 
                     FROM Table2 
                     WHERE PriceNumber = 2
                     )
           )
           AND
        (PriceNumber = 1)
       )

这是一个 sqlfiddle 的链接,您可以在其中使用代码: http://sqlfiddle.com/#!9/234ab/4/0

【讨论】:

  • 您的声明说返回价格 = 2 或价格 = 1 如果计数 = 1。但我需要显示价格 = 2,如果价格 = 2 不存在则显示价格 = 1。
    link。请注意,产品 3 有 2 个价格,但没有一个是价格 2。
  • 哦,好的,很抱歉。我正在更新它
  • 非常感谢!你是 SQL 大师 ;)
猜你喜欢
  • 2015-01-18
  • 2019-05-23
  • 1970-01-01
  • 1970-01-01
  • 2021-11-19
  • 2016-04-30
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多