首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Mysql父id子id关系

Mysql父id子id关系
EN

Stack Overflow用户
提问于 2017-10-08 23:24:22
回答 2查看 372关注 0票数 0

这是我的桌子

代码语言:javascript
复制
id parent_key field key status
1  0          f1    fk1  1
2  0          f2    fk2  0
3  fk2        f3    fk3  1
4  fk3        f4    fk4  1
5  0          f5    fk5  1
6  fk5        f6    fk6  1
7  fk6        f7    fk7  1
8  fk7        f8    fk8  0
9  fk8        f9    fk9  1

现在,我希望使用mysql查询以下数据

代码语言:javascript
复制
id parent_key field key status
1  0          f1    fk1  1
5  0          f5    fk5  1
6  fk5        f6    fk6  1
7  fk6        f7    fk7  1

如果父行状态为0,则不会考虑所有相应的子字段。

EN

回答 2

Stack Overflow用户

发布于 2017-10-09 01:01:39

假设表名和列。试试这个简单的查询

代码语言:javascript
复制
SELECT parent.id,parent.parent_key,parent.field,parent.status FROM parent   
as parent INNER JOIN child as child ON parent.id=child.id WHERE   
parent.status!=0

定义所需的列。

票数 0
EN

Stack Overflow用户

发布于 2017-10-10 15:36:10

Create Table语句。

代码语言:javascript
复制
create table test (
  id int, 
  parent_key varchar(10),
  field varchar(10), 
  key1 varchar(10),
  status int
);

Insert查询语句。

代码语言:javascript
复制
insert into test values (1,'0'  ,'f1','fk1',1);
insert into test values (2,'0'  ,'f2','fk2',0);
insert into test values (3,'fk2','f3','fk3',1);
insert into test values (4,'fk3','f4','fk4',1);
insert into test values (5,'0','f5','fk5',1);
insert into test values (6,'fk5','f6','fk6',1);
insert into test values (7,'fk6','f7','fk7',1);
insert into test values (8,'fk7','f8','fk8',0);
insert into test values (9,'fk8','f9','fk9',1);

查询:

代码语言:javascript
复制
set @status0 = ( select group_concat(key1) from test where status = 0);

select * from 
( select *, 
 if(find_in_set(parent_key,@status0) > 0, @status0 := concat(@status0,',',key1),@status0 ) as check_column
from test ) a 
where 
find_in_set(key1,check_column ) = 0

解释:

  1. 查找所有状态为0的key1并存储在@status0中。
  2. 查找所有父键并将其添加到@status0变量中。请参阅子查询。
  3. 我们有需要从最终查询中删除的所有条件。
  4. 使用find_in_set( key1,check_column )=0条件删除这些数据。
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/46632763

复制
相关文章

相似问题

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