-2

目前我在如何查询这个问题上遇到了问题。我当前的查询如下

  SELECT tbl1.col1,
  tbl1.col2,
  tbl1.col3,
  tbl1.col4,
  tbl1.col5,
  tbl2.col1,
  tbl2.col2,
  .
  .
  .
  tbln.col1,
  tbln.col2,

  FROM tbl1,tbl2,...tbln
  WHERE tbl1.col1= tbl2.col1AND
  .
  .
  .
  tbl1.col1= tbln.col1;

但我无法显示/显示其他表中不存在的那些行。

我真正想做的仍然是显示那些在其他表中不存在的数据,但是如果特定数据在其他表中不存在,它只会在列中显示空值。

  SELECT tbl1.col1,
  tbl1.col2,
  tbl1.col3,
  tbl1.col4,
  tbl1.col5,
  iff(tbl2.col1 <> null,tbl2.col1,NULL),
  iff(tbl2.col2 <> null,tbl2.col1,NULL),
  .
  .
  .
  iff(tbln.col1 <> null,tbl2.col1,NULL),
  iff(tbln.col2 <> null,tbl2.col1,NULL),

  FROM tbl1,tbl2,...tbln
  WHERE tbl1.col1= tbl2.col1 AND
  .
  .
  .
  tbl1.col1= tbln.col1;
4

2 回答 2

0

我不知道你为什么使用iff

尝试if

   if(tbl2.col1 <> null,tbl2.col1,NULL),

您可以通过在您的情况下使用来显示空值,LEFT JOIN您将执行数百个 if 语句,但left join更短更容易

于 2013-02-24T13:27:05.413 回答
0

只需使用LEFT JOIN

SELECT
  tbl1.col1, tbl1.col2, ...
  tlb2.col1, tbl2.col2, ...
  tlb3.col1, tbl3.col2, ...
  ...
  tlbn.col1, tbln.col2, ...
FROM tbl1
  LEFT JOIN tbl2 ON tbl1.col1 = tbl2.col1
  LEFT JOIN tbl3 ON tbl1.col1 = tbl3.col1
  ...
  LEFT JOIN tbln ON tbl1.col1 = tbln.col1

如果该表中不存在对应tbl2于. 对于所有其他表格也是如此。NULLtbl1

于 2013-02-24T13:27:18.620 回答