基于列值的简单SQL

时间:2013-12-13 00:07:47

标签: sql

我正在尝试创建一个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找到解决方案。

欢迎任何想法。提前谢谢。

1 个答案:

答案 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')