我正在一个简单的数据库上实现一个搜索,其中包含7个相关字段。我们的想法是 CONCAT
7个字段,并使用 LIKE
接线员。不匹配的记录有一个标志( filter
)设置为零。
UPDATE mapping SET FILTER = 0 WHERE id IN(
SELECT id WHERE
CONCAT(Field1, Field2, F3, F4, F5, F6, F7) NOT LIKE "%searchTerm%"
);
这在我的本地开发人员mysql上非常有用。
但是,我的主机使用mariadb,我收到一条错误消息:
1064-您的sql语法有错误;在第4行“where concat(targets,organizations)”附近,检查与您的mariadb服务器版本相对应的手册,以了解要使用的正确语法。
我已经隔离了select语句(并添加了 from mapping
),这也行。但是,更新只在本地有效,而不是在一个实时站点上。
从昨晚开始我就绞尽脑汁了。有什么想法吗?
1条答案
按热度按时间nuypyhwy1#
您需要删除子查询,因为它是不必要的:
如果你想用
IN
按你的建议,你必须使用FROM
条款:db<>小提琴演示maria db 10.3
为了帮助mysql:
db<>fiddle演示-mysql
相关文章:不能在from子句中指定更新的目标表