2017-02-05 12 views
0

午後の午後。SQLのテーブルの文字列を別の文字列に置き換える

私は、SQLの特定の列のクエリの結果を置き換えようとしています。テーブルは以下の通りです:

+-----------+----------+-------+-------+---------+ 
| firstName | lastName | major | minor | credits | 
+-----------+----------+-------+-------+---------+ 
| Owen  | McCarthy | Math | CSCI |  0 | 
| Mary  | Jones | Math | CSCI |  42 | 
+-----------+----------+-------+-------+---------+ 

私は数学とCSCIをコンピュータサイエンスに変更する必要があります。私はそれを置き換えることができる特定のコードはありますか?

私は、このテーブルを生成するために使用されるコードはこれです:

select firstName, lastname, major, minor, credits from student where major = 'Math' and minor = 'CSCI'; 

任意のヘルプは高く評価され、感謝してこれを行うための最善の方法は、ルックアップを持っている素敵なスーパーボウルの日曜日

答えて

2

を持っています結合されたテーブル。これにより、すべての置換が同じ値を使用するようにすることができます。

ただし、単一のクエリでは、caseという表現を使用できます。ただし、クエリでは、where句のために必要なものではありません。ただ、定数を使用:

select firstName, lastname, 
     'Mathematics' as major, 'Computer Science' as minor, credits 
from student 
where major = 'Math' and minor = 'CSCI'; 

あなたがどうなるwhere句、なし:

select firstName, lastname, 
     (case when major = 'Math' then 'Mathematics' else major end) as major, 
     (case when minor = 'CSCI' then 'Computer Science' else minor end) as minor, 
     credits 
from student; 
+0

サポートのおかげで、これはSQLがどのように機能し、どのように強力なクエリができるかを理解するのに役立ちます。どちらの例もありがとう –

1

あなたはケースバイ上でそれらを処理するために

select 
    firstName, 
    lastname, 
    CASE WHEN major="Math" THEN "Mathematics" 
    ELSE major 
    END as 'major', 
    CASE WHEN minor="CSCI" THEN "Computer Science" 
    ELSE minor 
    END as 'minor', 
    credits 
from student 
where major = 'Math' 
and minor = 'CSCI' 
; 

のようなものにそれを変更することができます場合によっては選択しただけではありますが、可能ならば学生表の定義をupdate students set major = 'Mathematics' where major = 'Math';(CSCIも同様)経由で変更するほうがよいでしょう。

+0

定義を変更できましたが、必要な形式は単にその定義を変更するだけでした。しかし、あなたの答えは、シンプルさの面で本当に役立ち、SQLの仕組みを理解するのに役立ちます。ありがとう –

+0

喜んでそれが助けた。上記から明らかでない場合は、ELSEの前に[CASEs](https://dev.mysql.com/doc/refman/5.5/en/case.html)を追加して、他のコンバージョンを処理することができます。ゴードンは言ったように理想的には学問のテーブルを持っていて、学生の専攻を文字列 "数学"として保管するのではなく、規律表のエントリーを指し示す数字のIDを保管します。あなたのSELECTは、そのIDに基づいて学生を分野に結びつけます。 –

関連する問題