在创建SQL时需要帮助

时间:2019-02-15 07:01:32

标签: sql sql-server

我有具有以下架构的表并包含记录-

id     parent_id    active
1      NULL           Y
2      1              Y
3      1              N
4      NULL           Y
5      4              N
6      NULL           N
7      6              N

我需要为以下用例编写一个SQL:

需要查找所有活动值不等于Y并且其parent_id活动值等于Y的所有记录。

上面的示例输出应如下:

输出应为-

id     parent_id    active
3      1              N
5      4              N

3 个答案:

答案 0 :(得分:1)

您可以使用如下所示的自我联接来实现:

SELECT *
FROM mytab t1 INNER JOIN mytab t2
ON t1.id = t2.parent_id
WHERE t1.active != 'Y'
AND   t2.active = 'Y'

答案 1 :(得分:0)

使用子查询1st获取所有具有active = Y的id,然后检查parent_id和active列

 select * from tbale_name where 
 parent_id in (
  select id from table_name where active='Y'
     ) and active='N'

https://dbfiddle.uk/?rdbms=sqlserver_2017&fiddle=4a450a50a2ea6c3f4e1a19e2657ae35d

id  parent_id   active
3     1             N
5     4             N

答案 2 :(得分:0)

您可以按以下方式使用自加入来完成此操作:

STATIC_URL = '/static/'
STATICFILES_DIRS = [
    os.path.join(BASE_DIR, "static"),
]

结果可以在这里看到: DB Fiddle Demo