2017-03-20 13 views
0

から1列を除いた、と私は次のクエリ実行しています:SELECT *と私は3つのデータベース(またはそれ以上)を持って述べたように、結果

SELECT * 
FROM [dbo].[FeatureVector] f, [dbo].[Defect] d,[dbo].DefectClass c 
WHERE f.DefectID = d.DefectID 
    AND f.DefectMapID = d.DefectMapID 
    AND d.GaugeID = d.GaugeID 
    AND d.DefectStatus = 5 
    AND c.ClassID = d.ClassID 
    AND f.Feature0 IS NOT NULL 

を、私は結果の1から除外するカラムは結果からXYを言って、私が試してみた:

SELECT * EXCEPT "XY" 
... 

SELECT * DROP "XY" 
... 

を誰がどのようにアイデアを持っていますこれを解決するには?

ありがとう

+2

[悪い習慣をキックする:使用して古いスタイルなJOIN](http://sqlblog.com/blogs/aaron_bertrand/archive/2009/10/08/bad-habits-to-kick-using-old-style- ANSI - ** 92 ** SQL標準(* ** 25 years ** ago!)の*正しい* ANSI 'JOIN'構文で置き換えられた古いスタイルの*カンマで区切られたテーブル* )そしてその使用はお勧めしません –

+2

[悪い習慣をキックする:SELECT *を使用する/列のリストを省略する](http://sqlblog.com/blogs/aaron_bertrand/archive/2009/10/10/bad-habits-to-キック使用を-選択-省い-列-list.aspx) –

+0

コピーExcelですべての列を貼り付け、その後、 '最後に'選択テーブルNEWTABLEドロップ列のcolname'を変更existtable'から – TheGameiswar

答えて

3

*を使用する代わりに明示的に列を指定しますか?これは、とにかくベストプラクティスです...あなたは本当にあなたが明示的にカラム名を指定して、あなたのSELECTクエリで、そのビューを使用することが可能なビューを作成し、それは

+0

私は600列以上持っています! – Engine

+0

したがって、SELECT * FROM sys.columnsからコピーして貼り付けてください! – Milney

+1

は、悲しいことに、これを行うための簡単な方法がない - と私は述べたように、あなたは本当に、明示的に他の多くの理由から、とにかくそれらすべてを必ず明記してください...あなたはにSSMSでオブジェクトエクスプローラから「列]ノードをドラッグすることができます – Milney

0

あなたのコードが脆くなりどこかのように*使用しないでください。

また、これはあなたが標準を使用する必要があり、SELECTクエリにカンマ区切りとしてテーブルを使うのは悪い習慣ですが代わりに参加します。

関連する問題