我正在尝试创建一个sql查询以根据特定条件返回行。以下是表格:
Table L:
l_id
v_id
l_name
Table S:
g_id
s_id
e_id
l_id
Table G:
g_id
g_name
g_no
...
我做了一个左外连接来获取值,即使没有设置S表,所以选择看起来像:
select g_id, s_id, g_name, g_no, l_name
from g
left outer join s on s.g_id = g.g_id
left outer join l on l.l_id = s.l_id
结果是:
g_id s_id g_name g_no l_name
3 s10 A true test
3 s9 A true test_7
17 {null} B false test_8
在上面的结果中我们得到2行,因为s_id为不同的l_name分配了2次。 我想返回同一个表,但是当列s_id<>时,我想只保留带有l_name =“test”的行{NULL}
我可以在后期处理中做到这一点,但是列表真的很大,所以我更喜欢用SQL找到解决方案。
欢迎任何想法。提前谢谢。
答案 0 :(得分:1)
您可以在where
子句中执行此操作:
select g_id, s_id, g_name, g_no, l_name
from g
left outer join s on s.g_id = g.g_id
left outer join l on l.l_id = s.l_id
where s_id is null or (s_id is not null and l_name = 'test')