首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >SQL Where组合值

SQL Where组合值
EN

Stack Overflow用户
提问于 2016-12-16 22:37:59
回答 4查看 58关注 0票数 1

我有一个数据库委员会和一个用户委员会。

委员会:

代码语言:javascript
运行
复制
CREATE TABLE `committee` (
`com_ID` int(10) unsigned NOT NULL AUTO_INCREMENT,
`duties` varchar(64) COLLATE utf8_unicode_ci NOT NULL,
`duties_de` varchar(256) COLLATE utf8_unicode_ci NOT NULL,
`duties_fr` varchar(256) COLLATE utf8_unicode_ci NOT NULL,
`users_IDFS` int(10) unsigned DEFAULT NULL,
PRIMARY KEY (`com_ID`),
KEY `users_IDFS` (`users_IDFS`),
CONSTRAINT `committee_ibfk_1` FOREIGN KEY (`users_IDFS`) REFERENCES `users` (`ID`)
) ENGINE=InnoDB AUTO_INCREMENT=2 DEFAULT CHARSET=utf8 COLLATE=utf8_unicode_ci

和用户

代码语言:javascript
运行
复制
CREATE TABLE `users` (
`ID` int(10) unsigned NOT NULL AUTO_INCREMENT,
`rank` tinyint(2) NOT NULL,
`name` varchar(32) NOT NULL,
`first_name` varchar(32) DEFAULT NULL,
`email` varchar(64) NOT NULL,
`passwd` varchar(128) NOT NULL,
`street` varchar(128) DEFAULT NULL,
`location` varchar(128) DEFAULT NULL,
`plz` varchar(8) DEFAULT NULL,
`m_number` varchar(32) DEFAULT NULL,
PRIMARY KEY (`ID`)
) ENGINE=InnoDB AUTO_INCREMENT=5 DEFAULT CHARSET=utf8

现在我的问题是,我想要更新committee表中的user,其中的名称例如“汉斯·梅尔”== users.first_name和users.name

有没有一种方法可以在SQL语句中拆分"Hans Meier“,或者我可以将users.first_name和users.name组合成一个字符串,然后进行比较?

EN

回答 4

Stack Overflow用户

回答已采纳

发布于 2016-12-16 22:47:34

您可以执行如下所示的update-join

代码语言:javascript
运行
复制
update committee c
join `users` u on c.name  = u.name or c.name like CONCAT(u.first_name, '%')
set c.col = u.val;
票数 2
EN

Stack Overflow用户

发布于 2016-12-16 22:49:18

将两个字符串合并为一个字符串的方法是使用concat命令。http://dev.mysql.com/doc/refman/5.7/en/string-functions.html#function

您可以做的是,如您所说,将user.first_name和user.name结合起来并进行比较。

代码语言:javascript
运行
复制
select if('ab'=concat('a','b'),1,0);

你应该这样做

代码语言:javascript
运行
复制
select if('Hans Meier'= concat(user.first_name, ' ', user.name, <true clause>, <false clause>);

不要忘记空间,否则它会失败。

代码语言:javascript
运行
复制
select if('a b'=concat('a','b'),1,0);

update语句应如下所示

代码语言:javascript
运行
复制
update committee
set user = <name of user>
where(user.name = concat(user.first_name, ' ', user.name);

希望这能有所帮助!

票数 1
EN

Stack Overflow用户

发布于 2016-12-16 22:45:02

您可以使用下面这样的内容

代码语言:javascript
运行
复制
SUBSTRING('Hans Meier',0,LOCATE(" ", "Hans Meier"))

对于名字

SUBSTRING('Hans Meier',LOCATE(" ", "Hans Meier") + 1)

姓氏

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/41186720

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档