3

現在、2つのテーブルがありますが、どちらのテーブルも同じ構造であり、Webアプリケーションで使用される予定です。2つのテーブルは生産と臨時雇用者です。一時テーブルには、[signedup]と呼ばれる追加の列が1つ含まれています。現在、各テーブル(recnoとname)にある2つの列を使用して単一のリストを生成しています。これらの2つのフィールドを使用して、Webアプリケーションの検索機能をサポートできます。今私がする必要があるのは、2番目のテーブルの検索で使用できるアイテムの量を制限することをサポートすることです。この理由は、人が「サインアップ」すると、同様のレコードがプロダクションテーブルに作成され、独自のrecnoを持つようになるためです。

やって:

Select recno, name
  from production
UNION ALL
Select recno, name
  from temp

...みんなに見せてくれます。私が試してみました:

Select recno, name
  from production
UNION ALL
Select recno, name
  from temp
 WHERE signup <> 'Y'

しかし、これは何も返しませんか?誰か助けてもらえますか?

4

2 に答える 2

8

あなたが求めていることのために、あなたはそれをこのスタイルで行うことができます。

SELECT * FROM
(
    SELECT '1' as `col`
    UNION 
    SELECT '2' as `col`
) as `someAlias`
where `someAlias`.`col` = '1'

ユニオン全体を括弧で囲み、エイリアスを付けてから、条件を付けます。

于 2011-12-12T19:24:18.477 に答える
1

あなたが何を望んでいるのか正確に理解しているかどうかはわかりません。一時テーブルからサインアップした後で本番テーブルにレコードを作成し、サインアップしていない人だけが必要な場合は、本番テーブルを調べる必要はまったくありません。単に:

SELECT recno, name FROM temp WHERE signup='N'

または、検索を制限しようとしています。何らかの理由でユニオンが必要であるが、重複を排除しようとしている場合は、ステートメントを変更してALL句を削除する必要があります。Union ALLを使用すると、重複が発生します。重複する値が必要ない場合は、UNIONでALLを使用しないでください。ここでユニオンについて読むことができます。

于 2010-04-08T19:08:36.573 に答える