MySql查询:另一列的可选联接
我正在寻找加入另一列的'斯波塞名称'可选,如果一个人有配偶 以下是表格声明:MySql查询:另一列的可选联接,mysql,sql,Mysql,Sql,我正在寻找加入另一列的'斯波塞名称'可选,如果一个人有配偶 以下是表格声明: CREATE TABLE `people` ( `id` int(11) NOT NULL AUTO_INCREMENT, `name` varchar(20) NOT NULL, `surname` varchar(20) NOT NULL, `relativeto` int(11) DEFAULT NULL, `relation` varchar(1) NOT NULL DEFAULT 'n', PRI
CREATE TABLE `people` (
`id` int(11) NOT NULL AUTO_INCREMENT,
`name` varchar(20) NOT NULL,
`surname` varchar(20) NOT NULL,
`relativeto` int(11) DEFAULT NULL,
`relation` varchar(1) NOT NULL DEFAULT 'n',
PRIMARY KEY (`id`)
) ENGINE=InnoDB AUTO_INCREMENT=1 DEFAULT CHARSET=utf8
关系
可以是“n”或“s”
- 如果是“s”,则另一行为此人持有配偶,而relativeto持有配偶的id
- 如果“n”,则该人没有配偶
SELECT T1.*,T2.name AS spouse
FROM `people` T1, `people` T2
WHERE T1.surname LIKE 'AB%'
AND T1.relation='s'
AND T1.relativeto=T2.id
但它将忽略没有配偶的人。
我还想添加没有配偶的人,并将“-”作为配偶的名称
你能告诉我怎么做吗?使用left join并将你的
T1.relation='s'
条件放入ON子句中
SELECT T1.*,coalesce(T2.name,'-') AS spouse
FROM `people` T1 left join `people` T2
on T1.relativeto=T2.id AND T1.relation='s'
where T1.surname LIKE 'AB%'
使用left join并将您的
T1.relation='s'
条件放入ON子句中
SELECT T1.*,coalesce(T2.name,'-') AS spouse
FROM `people` T1 left join `people` T2
on T1.relativeto=T2.id AND T1.relation='s'
where T1.surname LIKE 'AB%'
当然可以,但发布问题的时间限制为15分钟。。。现在完成:)当然,但发布问题的时间限制为15分钟。。。现在完成:)