如果该列没有特定文本,如何更改该列的值?

时间:2018-08-02 01:33:37

标签: mysql sql mysql-workbench

我有一张这样的桌子:

+---------+-------+
| Fruits  | Price |
+---------+-------+
| Apple   | 2.00  |
| Orange  | 3.00  |
| Banana  | 4.00  |
+---------+-------+

如果Fruits列中没有Grapes,则 我如何退回0价格 喜欢

+---------+-------+
| Fruits  | Price |
+---------+-------+
| Grape   | 0.00  |
+---------+-------+

这是我的查询

Select
    Fruits, 
    Price
From
    Products

3 个答案:

答案 0 :(得分:1)

您可以这样做:

select x.*
from (select 'Grapes' as fruit, 0.00 as price) x
where not exists (select 1 from atable t where t.fruit = 'Grapes');

答案 1 :(得分:1)

理想情况下,您将有一个表,其中包含要显示在报告中的所有水果的名称。因此,类似这样的方法应该起作用:

SELECT
    p.Fruits,
    COALESCE(p.Price, 0.00) AS Price
FROM
(
    SELECT 'Apple' AS Fruits UNION ALL
    SELECT 'Orange' UNION ALL
    SELECT 'Banana' UNION ALL
    SELECT 'Grape'
) AS all_fruits
LEFT JOIN Products p
    ON all_fruits.Fruits = p.Fruits;

如果您只想查看不匹配的水果,则可以在查询末尾添加以下内容:

WHERE p.Fruits IS NULL

答案 2 :(得分:0)

这也是使用Select from the same table来完成NOT IN的另一种方式,如果表中有多行,它将返回重复值,因此我们可以使用DISTINCT或{ LIMIT中的{1}}

MYSQL

注意:如果表为空,它将不返回任何记录,我希望在这种情况下返回值也没有意义,但是如果您仍然希望返回一个值,那么在这种情况下,我必须对不起:)