Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/mysql/55.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
MySql查询:另一列的可选联接_Mysql_Sql - Fatal编程技术网

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分钟。。。现在完成:)