我不确定单独使用SQL查询是否可行,但我基本上想要创建一个这样的表但是在课程类型字段上有一个条件,它存储'moreher'或'higher'作为基于数字的关于'course_type'是什么:
CREATE TABLE IF NOT EXISTS `courses_index` (
`id` int(11) NOT NULL AUTO_INCREMENT,
`title` text COLLATE utf8_unicode_ci NOT NULL,
`url` text COLLATE utf8_unicode_ci NOT NULL,
`further` int(1) NOT NULL,
`higher` int(1) NOT NULL,
PRIMARY KEY (`id`),
FULLTEXT `index` (title, url, course_type)
) AS SELECT title, url, course_type FROM `courses`
课程表中的course_type
字段是标准文本字段,其中包含"Higher, Further"
或"Further"
等字符串。
我希望能够说明这个course_type
字段是否为LIKE %higher%
,那么该行的值为1
。同样,如果course_type
的值为LIKE %higher%further
,则两个字段都存储为1
等。
这可以通过创建临时表或聪明的MySQL查询来实现吗?
非常感谢提前
添
答案 0 :(得分:1)
以下内容应该有效:
CREATE TABLE ...
AS
SELECT title,
url,
CASE
WHEN course_type LIKE '%Further%' THEN 1
ELSE 0
END as further,
CASE
WHEN course_type LIKE '%Higher%' THEN 1
ELSE 0
END as higher
FROM `courses`
EDIT修复了破解的语法
答案 1 :(得分:0)
根据@ beny23的回答,我最终得到了以下内容:
CREATE TABLE IF NOT EXISTS `courses_index` (
`id` int(11) NOT NULL AUTO_INCREMENT,
`title` text COLLATE utf8_unicode_ci NOT NULL,
`url` text COLLATE utf8_unicode_ci NOT NULL,
`course_type` int(2),
PRIMARY KEY (`id`),
FULLTEXT `index` (title, url, course_type))
AS
SELECT title,
url,
course_type,
CASE
WHEN course_type LIKE '%higher%further%' THEN 3
WHEN course_type LIKE '%higher%' THEN 2
WHEN course_type LIKE '%further%' THEN 1
ELSE 0
END
FROM `courses`