美好的一天,我遇到了这个命令行的问题:
INSERT INTO oc_idai (name, language_id)
SELECT
name, language_id
FROM
oc_product_description
WHERE
(
name LIKE '%0%'
OR name LIKE '%1%'
OR name LIKE '%2%'
OR name LIKE '%3%'
OR name LIKE '%4%'
OR name LIKE '%5%'
OR name LIKE '%6%'
OR name LIKE '%7%'
OR name LIKE '%8%'
OR name LIKE '%9%'
AND language_id = '5'
)
此代码无效。有2个字段,如名称和 language_id 。如果没有其中一个字段,命令就完美无缺:
INSERT INTO oc_idai (name)
SELECT
name
FROM
oc_product_description
WHERE
(
name LIKE '%0%'
OR name LIKE '%1%'
OR name LIKE '%2%'
OR name LIKE '%3%'
OR name LIKE '%4%'
OR name LIKE '%5%'
OR name LIKE '%6%'
OR name LIKE '%7%'
OR name LIKE '%8%'
OR name LIKE '%9%'
)
由于
答案 0 :(得分:0)
如果没有关于' Not Working'的确切性质的任何其他信息,我猜你的问题是你的条件搞砸了。您希望名称与其中一个通配符字符串language_id = 5
将其更改为:
WHERE
(
( name LIKE '%0%'
OR name LIKE '%1%'
OR name LIKE '%2%'
OR name LIKE '%3%'
OR name LIKE '%4%'
OR name LIKE '%5%'
OR name LIKE '%6%'
OR name LIKE '%7%'
OR name LIKE '%8%'
OR name LIKE '%9%' )
AND language_id = '5'
)
答案 1 :(得分:0)
除了Ray有用的观察结果,您的or
语句应该组合在一起 - 您的oc_idai
表实际上是否有language_id
字段?在“工作”查询中,未指定语言字段,这意味着它默认为null
或模式指定的默认值。尝试insert
进入不存在的字段是获得错误的可靠方法。
如果你把小提琴放在一起会有所帮助。如果没有看到您的架构,我们只能做出有根据的猜测。以下是schema
和query
的有效版本:http://sqlfiddle.com/#!9/d6414/1将其与您自己的版本进行比较,以了解您可能出错的地方。