2011-01-25 15 views
2

私はこの質問を以下に行うことができますか?Select Queryに文字列を含める

SELECT America, England, DISTINCT (country) FROM tb_country 

れます(私の意図がにある)表示:

America 
England 
(List of distinct country field in tb_country) 

だから、ポイントがDISTINCT国フィールドには何も返さない場合でも、(例えば)アメリカとイギリスを表示することです。基本的には、このクエリを使用して選択ドロップダウンリストを表示し、ユーザが選択できるいくつかの固定値を与え、自分が望むように新しい国を追加できるようにします。

tb_countryの1つの行の値がAmericaまたはEnglandの場合は、クエリ結果に重複として表示されません。 tb_countryは、値のリストを持っているのであれば:

America 
England 
Germany 
Holland 

答えて

7

あなたはUNIONを使用する必要があります:

Germany 
England 
Holland 

クエリにのみ出力は以下となります

SELECT 'America' AS country 
UNION 
SELECT 'England' AS country 
UNION 
SELECT DISTINCT(c.country) AS country 
    FROM TB_COUNTRY c 

UNIONは重複を削除します。 UNION ALLはそれほど高速ではありません。

データ型は、SELECT句の各序数位置と一致する必要があります。つまり、最初のクエリの最初の列がINTの場合、その後のすべての結合された文の最初の列もINTまたはNULLである必要があります。一度実行し

:あなたはtb_countryで体重列を追加し、順序句を使用していないのはなぜ

+0

他にもありますか?この方法で10〜20個のスティッキー値をリストしなければならない場合、クエリは非常に長くなります。それ以外の方法がない場合は、私はあなたの提案を使用するつもりです。ありがとう – Henson

+0

@ヘンソン:この状況のた​​めの最良の選択肢は、国の一意のリストを保持する国のテーブルを持つことです。次に、他のテーブルの国情報が必要な場合は、country_idのような主キーを参照します。 –

+0

ええ、私は通常それもやっています。しかし、クライアントはこの方法を主張している:(奇妙な... – Henson

0

update country set weight = 1 where country = 'England'; 
update country set weight = 1 where country = 'America'; 

は、次にそれを使用します。

select distinct(country) from tb_country order by desc weight ; 

もう一つの方法は、使用することです2つの列(国、重量)と外部結合を持つ余分な国別テーブル。

Personnaly私は、国のフィールドに対してUNIQUE制約を持つ国テーブルを好んでおり、 外部キーを使用します。

関連する問題