Mysql 如果列没有特定文本,如何更改列的值?
我有一张这样的桌子:Mysql 如果列没有特定文本,如何更改列的值?,mysql,sql,mysql-workbench,Mysql,Sql,Mysql Workbench,我有一张这样的桌子: +---------+-------+ | Fruits | Price | +---------+-------+ | Apple | 2.00 | | Orange | 3.00 | | Banana | 4.00 | +---------+-------+ 如果水果列没有葡萄,则 如何退回0的价格 像 这是我的问题 Select Fruits, Price From Products 你可以做: select x.* fr
+---------+-------+
| Fruits | Price |
+---------+-------+
| Apple | 2.00 |
| Orange | 3.00 |
| Banana | 4.00 |
+---------+-------+
如果水果
列没有葡萄
,则
如何退回0的价格
像
这是我的问题
Select
Fruits,
Price
From
Products
你可以做:
select x.*
from (select 'Grapes' as fruit, 0.00 as price) x
where not exists (select 1 from atable t where t.fruit = 'Grapes');
理想情况下,您应该有一个表,其中包含您希望在报告中显示的所有水果的名称。因此,类似这样的方法应该会奏效:
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
这里还有另一种方法,可以使用
NOT IN
从同一个表中进行相同的选择,如果表中有多行,它将返回重复值,因此我们可以在MYSQL
中使用DISTINCT
或LIMIT
SELECT DISTINCT 'Grapes' AS fruit,
0.00 AS price
FROM yourTable
WHERE 'Grapes' NOT IN (fruits)
注意:如果表为空,它将不会返回任何记录,我希望在这种情况下返回值也没有意义,但如果您仍然希望返回一个,那么我必须说对不起:)在这种情况下。您应该添加此表中的所有结果,并为它们添加默认值,因为数据库无法神奇地插入一行。若某些列不包含值,它可以为这些列添加默认值,但若并没有行,那个么就并没有办法进行标识,所以您应该将它们添加到表中,而不是添加到查询中(这会使您的查询变得复杂)。
SELECT DISTINCT 'Grapes' AS fruit,
0.00 AS price
FROM yourTable
WHERE 'Grapes' NOT IN (fruits)