-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;

しかし、他のテーブルに存在しなかった行を表示/表示することはできません。

私が本当にやりたいことは、他のテーブルに存在しなかったものを表示することですが、特定のデータが他のテーブルに存在しない場合は、列に null が表示されるだけです。

  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 ステートメントを使用することで null 値を表示できますが、 with の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 に答える