2

SQL Server 2008 を使用しています。2 つの SQL クエリがあります。

select Course 
from StudentDB.dbo.Student 
where RollNo = 130

select Course 
from StudentDB.dbo.Courses 
where Course is not null

最初のクエリは次の値を返します

MSc

2番目のクエリが返されます

MCA
MSc
CSE
ECE
EEE

これらのクエリに参加する必要があり、このような出力が必要です

MSc
MCA
CSE
ECE
EEE

つまり、2 番目のクエリの結果を最初のクエリに追加し、重複する値を削除します。

結果の上に最初のクエリの結果が必要であることに注意してください。ここで、Msc は最初のクエリの結果であるため、最初の値です。ユニオンしてみました。ただし、2 番目のクエリ自体の結果が返されます。したがって、これらのクエリの結合は役に立ちません。

4

3 に答える 3

4

私はDISTINCTのファンではありません。JWの回答に基づいて作業すると、最初にStudentDB.dbo.Studentの値で順序付けられた値の個別のリストが表示されます。

SELECT Course
FROM
(
    select Course, 1 ord from StudentDB.dbo.Student where RollNo = 130
    UNION
    select Course, 2 ord from StudentDB.dbo.Courses where Course is not null
) s
GROUP BY Course
ORDER BY min(ord)
于 2013-01-18T06:40:26.307 に答える
0

このスクリプトを SQL サーバーで実行するだけで結果が得られます。ストア プロシージャでも使用できます。

SELECT Course,1 ord INTO #tmpTable FROM Student

INSERT #tmpTable
SELECT Course,2 ord FROM Courses WHERE Course IS NOT NULL 
AND Course NOT IN(SELECT Course FROM Student)

SELECT Course FROM #tmpTable ORDER BY ord

DROP TABLE #tmpTable
于 2013-01-18T06:28:45.850 に答える
0

サーバーのデフォルトの照合順序が SQL_Latin1_General_CP1_CI_AS であり、大文字と小文字を区別しない (CI) ためである可能性があります。

これにより、Msc が MSC と同じになります。大文字と小文字を区別しない別の照合順序に変更する必要があります。

可能な照合を参照してください: http://msdn.microsoft.com/en-us/library/ms144250(v=sql.105).aspx

COLLATE http://blog.sqlauthority.com/2007/04/30/case-sensitive-sql-query-search/の使用法を参照してください。

于 2013-01-18T06:18:09.433 に答える