2

変更できないクエリがあります。例えば:

SELECT studentid FROM school s LEFT OUTER JOIN mall m ON s.studentid=m.studentid

学生はテーブル Mall に 2 つの行を持っています。上記のクエリは、学生がテーブル モールに同じ ID を持つ 2 つの行を持っているため、重複を出力します。テーブル モールには日付列があり、最新の日付を持つ学生を選択したいだけです。どうすればいいですか?(where句に条件を追加するだけです)

4

5 に答える 5

1
where m.date=(select max(date) from mall where studentid=m.studentid)
于 2012-10-09T07:43:07.847 に答える
1

これを試して:

select s.studentid 
from school s 
INNER JOIN malls m1 ON m1.studentid = s.studentid
INNER JOIN
(
   SELECT studentid, Max(DateField) MaxDate 
   FROM mall
   GROUP BY studentid
) m2 on m1.studentid = m2.studentid AND m1.DateField = m2.MaxDate 
于 2012-10-09T07:43:45.507 に答える
0

次のように order by と limit を使用できます。

select studentid 
from school s 
left outer join mall m on s.studentid=m.studentid 
order by date desc 
limit 1

where句で複数選択クエリを使用するよりも簡単な方法です。

于 2012-10-09T07:43:26.130 に答える
0

使用している場合SQL Server

WITH LatestRecord
AS
(
    SELECT  studentID, date,
            ROW_NUMBER() OVER(Partition BY StudentID Order By DATE DESC) AS RN
    FROM    mall
)
SELECT  a.*, b.studentID, b.date
FROM    School a
        INNER JOIN LatestRecord b
            on a.StudentID = b.Student_ID
WHERE   RN = 1
于 2012-10-09T07:44:37.643 に答える