如何从MySQL表中删除单个值

3

i have the following data in the table

name        price
red wine    150
white wine  300

我希望删除值为300。
我使用以下查询:
update cms.wine set price =null where name='white wine'

我收到以下错误信息:

您正在使用安全更新模式,并尝试更新一个没有使用关键列的 WHERE 语句的表。要禁用安全模式,请在“首选项”->“SQL查询”中切换选项,并重新连接。


这个查询能否在不切换安全模式的情况下执行? - Brian
@John Woo想要更新特定行中的一个值,而不是删除整行。 - Nahuel Ianni
在这种情况下,您必须根据ID进行删除。 - Ehsan Sajjad
你应该添加一个主键列。 - Ehsan Sajjad
2个回答

4

请执行以下步骤:

SET SQL_SAFE_UPDATES=0;

然后:
update cms.wine set price =null where name='white wine;'

但是你应该基于id列执行操作,因为它将删除所有名称等于白葡萄酒的记录。

就像这样:

update cms.wine set price =null where id=1;

这将仅删除主键值为1的特定记录。

您应该在表中添加一个主键列,使您的表看起来像这样,并将列设置为主键,以便它始终对于每个记录都是唯一的:

id      name          price
1       red wine      150
2       white wine    300

0
使用这个:
DELETE FROM cms.wine WHERE price = '300' LIMIT 1

还有一个问题,如何避免在选择查询中检索空值?例如,我想检索一列,该列中的某些字段为空。有没有办法防止检索这些空值? - Brian
阅读原帖。他说想要删除记录中的“300”。 - Over Killer
Op说他想删除值而不是行。 - Ehsan Sajjad

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接