SQL语句有条件地选择相关记录

杰特雷姆

我有一个带有字段id(主键)和的表fid我想获取id匹配特定值的记录,以及具有相同fid值的所有相关记录

我可以做这个:

SELECT * FROM mytable 
WHERE fid = (SELECT TOP 1 fid FROM mytable WHERE id = 'somevalue')

但是我不希望相关记录是否fid为特定值(在我的情况下为空的guid值)。

有没有办法在单个SQL语句中执行此操作?我正在使用SQL Server 2008 R2。

更新:

看到目前为止的答案,我想我可能没有清楚地问过我的问题。id并且fid永远不会平等。LEFT JOIN可能正是我所需要的,但是我有点不懂SQL。我希望将以下两个查询作为单个语句:

SELECT * FROM mytable WHERE id = 'somevalue' 

SELECT * FROM mytable WHERE fid = 
    (SELECT TOP 1 fid FROM mytable 
     WHERE id = 'somevalue' AND fid != '00000000-0000-0000-0000-000000000000')  
戈登·利诺夫

根据您的修订,问题似乎是“选择所有id具有特定值的行,以及所有其他具有id匹配” somevalue”fid且不为null的行。

以下内容捕获了此逻辑:

SELECT t.*
FROM mytable t left outer join
     (SELECT TOP 1 fid
      FROM mytable 
      WHERE id = 'somevalue' AND fid <> '00000000-0000-0000-0000-000000000000'
     ) t1
     on t.fid = t1.fid
WHERE id = 'somevalue' or t1.fid is not null;

因为id是主键,所以t1子查询将返回0或1行。当它返回0行时,您只会得到与之匹配的原始行'somevalue'

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

如何有条件地从SQL Server选择记录

来自分类Dev

根据字段有条件地选择整个记录

来自分类Dev

有条件地选择模型

来自分类Dev

如何有条件地选择MySQL语句中的某些字段

来自分类Dev

实体框架-有条件地包括相关实体

来自分类Dev

SAS任务。需要有条件地选择记录

来自分类Dev

有条件选择-SQL Server

来自分类Dev

可以有条件地使用“ with”语句吗?

来自分类Dev

根据表数据有条件地执行SQL查询/语句

来自分类Dev

有条件地在原始postgresql函数中执行SQL语句吗?

来自分类Dev

(SQL)在查询中,如何使用仅有条件地需要JOIN的CASE语句?

来自分类Dev

根据表数据有条件地执行SQL查询/语句

来自分类Dev

OpenERP(Python)-有条件地搜索记录ID?

来自分类Dev

Laravel:有条件地获取记录

来自分类Dev

SQL Server,如何有条件地更新多个记录?

来自分类Dev

有条件地更新SQL Server中的仅一条记录

来自分类Dev

有条件选择记录Oracle SQL / PL / SQL在表上进行左外部联接

来自分类Dev

Spark SQL根据列数据类型有条件地选择列

来自分类Dev

有条件地选择熊猫DataFrame中的数据

来自分类Dev

有条件地选择串行器

来自分类Dev

有条件地选择字段值

来自分类Dev

有条件地选择和设置列值

来自分类Dev

有条件地在R中选择多个列

来自分类Dev

有条件地选择要继承的类

来自分类Dev

如何有条件地选择变量?

来自分类Dev

有条件地选择熊猫DataFrame中的数据

来自分类Dev

有条件地在Angular中填充选择列表

来自分类Dev

有条件地从列决策中选择数据

来自分类Dev

如何有条件地选择要显示的行