MySql 在 ; 之后的列中删除

MySql delete in column after ;

您好,我的 SQL 中有一列包含网址,但是我必须修改它以仅保留第一个

列名称赞 数据前。 http://sub.domain.com/t/003/4_b_3.jpg;http://sub.domain.com/t/003/1_b_3.jpg;http://sub.domain.com/t/003/2_b_3.jpg;http://sub.domain.com/t/003/3_b_3.jpg;http://sub.domain.com/t/003/5_b_3.jpg;http://sub.domain.com/t/003/6_b_3.jpg;http://sub.domain.com/t/003/7_b_3.jpg;http://sub.domain.com/t/003/8_b_3.jpg;http://sub.domain.com/t/003/9_b_3.jpg;http://sub.domain.com/t/003/10_b_3.jpg

结果应该是 http://sub.domain.com/t/003/4_b_3.jpg,没有别的

任何人都可以帮助我语法吗?

提前致谢

使用非运算符<>

DELETE FROM [table] WHERE url <> 'http://sub.domain.com/t/003/4_b_3.jpg'

这将删除除 http://sub.domain.com/t/003/4_b_3.jpg

以外的所有行

或通用:

DELETE FROM [table] WHERE [url] NOT IN (SELECT TOP 1 [url] FROM [table])

通用的 returns 第一行 table 并且免于删除。

为了测试而不是抱歉使用 (MySQL):

START TRANSACTION;
    DELETE FROM [table] WHERE url <> 'http://sub.domain.com/t/003/4_b_3.jpg';
ROLLBACK TRANSACTION;

会执行DELETE但之后回滚,当它起作用时,不执行tran

假设 () Thumbs 是一个长字符串(它似乎在你原来的问题中,在我认为可能不正确的编辑之前),这将删除;

第一次出现后的所有内容
update tablename
set Thumbs = left(Thumbs , instr(Thumbs , ';')-1)
where instr(Thumbs , ';') > 0;

Sample SQL Fiddle

我建议使用 substring_index():

update tablename
    set Thumbs = substring_index(Thumbs, ';', 1)
    where thumbs like '%;%';

此函数旨在提取分隔字符串的第一部分。