Sql 如何查看一个字段条目是否在另一个字段中有相应的条目?

Sql 如何查看一个字段条目是否在另一个字段中有相应的条目?,sql,ms-access,Sql,Ms Access,我有一个名为Table1的表,如下所示: Company Start1 Start2 Start3 End1 End2 End3 ----------------------------------------------------------------------------- 010105 1/2/1990 7/30/2001 023123 2/1/1998

我有一个名为Table1的表,如下所示:

Company    Start1      Start2      Start3      End1      End2      End3
-----------------------------------------------------------------------------
010105     1/2/1990                            7/30/2001
023123     2/1/1998    2/1/2012                5/15/2008 
124557     1/15/2001   
436567     1/12/2004   1/12/2010   1/12/2012   1/15/2005 1/15/2010 
034534     1/1/2002    1/1/2003    1/1/2004    5/1/2002  5/1/2006  5/1/2004
123456     1/1/2002    1/1/2003                          5/1/2006
我正在寻找任何一家公司,它的Start1没有相应的End1,或者Start2没有相应的End2,等等。字段中的条目不会完全匹配,但是如果一个有条目,另一个也应该匹配

这可能吗

上述示例中的查询将返回以下内容:

023123 (has Start2 but no End2)
124557 (has Start1 but no End1)
436567 (has Start3 but no End3)
123456 (has Start1 but no End1)
(我只需要公司编号,不需要括号中的文字)


谢谢

假设除了列出的3对之外没有其他列,这可以通过一个简单的
WHERE
子句来完成,该子句测试每列中的非
NULL
开始日期以及相应的
NULL
结束日期。如果满足三个条件中的任何一个,将返回
公司

SELECT DISTINCT Company
FROM Table1
WHERE
  (Start1 IS NOT NULL AND End1 IS NULL)
  OR (Start2 IS NOT NULL AND End2 IS NULL)
  OR (Start3 IS NOT NULL AND End3 IS NULL)
如果您的空字段实际上是空字符串
'
而不是
NULL
,请替换空字符串,如下所示:

(Start1 <> '' AND End1 = '')
(开始1''和结束1='')

注意,如果
Company
列是唯一键或主键,则不需要
DISTINCT

假设除了列出的3对之外没有其他列,这可以通过一个简单的
WHERE
子句来完成,该子句测试每列中的非
NULL
开始日期以及相应的
NULL
结束日期。如果满足三个条件中的任何一个,将返回
公司

SELECT DISTINCT Company
FROM Table1
WHERE
  (Start1 IS NOT NULL AND End1 IS NULL)
  OR (Start2 IS NOT NULL AND End2 IS NULL)
  OR (Start3 IS NOT NULL AND End3 IS NULL)
SELECT t.Company FROM Table1
WHERE t.start1 IS NOT NULL and t.end1 IS NULL or
      t.start2 IS NOT NULL and t.end2 IS NULL or
      t.start3 IS NOT NULL and t.end3 IS NULL
如果您的空字段实际上是空字符串
'
而不是
NULL
,请替换空字符串,如下所示:

(Start1 <> '' AND End1 = '')
(开始1''和结束1='')
注意,如果
Company
列是唯一键或主键,则不需要
DISTINCT

SELECT t.Company FROM Table1
WHERE t.start1 IS NOT NULL and t.end1 IS NULL or
      t.start2 IS NOT NULL and t.end2 IS NULL or
      t.start3 IS NOT NULL and t.end3 IS NULL
如果上述方法不能解决您的问题,请提供更多信息

SELECT Company FROM yourtable
  WHERE Start1 IS NOT NULL AND End1 IS NULL OR
  Start2 IS NOT NULL and End2 IS NULL OR
  Start3 IS NOT NULL and End3 IS NULL

如果上述方法不能解决您的问题,请提供更多信息。

是否有更多的列,您是否可以假定始终有3个开始列和结束列?是否有更多的列,您是否可以假定始终有3个开始列和结束列?是否有其他不需要查询的列,例如地址、状态、,等等。@JeffBrady那么这应该可以帮你。还有其他不需要查询的列,比如地址、州等。@JeffBrady那么这应该可以帮你。
SELECT Company FROM yourtable
  WHERE Start1 IS NOT NULL AND End1 IS NULL OR
  Start2 IS NOT NULL and End2 IS NULL OR
  Start3 IS NOT NULL and End3 IS NULL