SQL查询返回表,如果存在retun价格2否则返回价格1

时间:2016-05-17 21:06:20

标签: sql if-statement join exists

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

我有桌子:

表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

谢谢!

1 个答案:

答案 0 :(得分: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