我有具有以下架构的表并包含记录-
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
答案 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