1

SQL でクエリを作成しました。ここでは、Companys.ID を 1 回だけ保持します。そのため、Distinct を使用します。

SELECT DISTINCT Companies.ID, Companies.Company, Abo.Ende 
FROM Companies
LEFT JOIN Abo on Companies.ID = Abo.CompanyID 
ORDER BY Abo.Ende

テーブル Abo.Ende には、Abo.CompanyID のエントリがさらにあります。結果として、最新の Abo.Ende を含む個別の Companies.ID を取得したいと考えています。注: Abo.Ende は日時フィールドであり、最新のものを取得したいと考えています。

これがそれを行うための最良の方法であるかどうか疑問に思っています。別の方法はありますか?

4

3 に答える 3

4

group byではなく、が必要ですdistinct

SELECT Companies.ID, Companies.Company, max(Abo.Ende)
FROM Companies
LEFT JOIN Abo on Companies.ID = Abo.CompanyID 
GROUP BY Companies.ID, Companies.Company

使用に関するコメントDISTINCT:

DISTINCT全体に作用します。したがって、すべての列値の個別の組み合わせを 1 行で返します。PK列を含める場合(おそらくcompanies.idあなたの場合)、PKは定義上一意であるため、distinctは行を「削除」しません.1つの列がすべての行で一意である場合、結果のすべての列は「一意」です(オペレーターの意味でDISTINCT)も同様です。

于 2013-02-05T11:30:21.183 に答える
1
SELECT Companies.ID, Companies.Company, max(Abo.Ende)
FROM Companies
LEFT JOIN Abo on Companies.ID = Abo.CompanyID 
GROUP BY Companies.ID, Companies.Company
于 2013-02-05T11:42:15.413 に答える
1

試す:

SELECT Companies.ID, 
       Companies.Company, 
       MAX(Abo.Ende) AS Ende
FROM Companies
LEFT JOIN Abo on Companies.ID = Abo.CompanyID
GROUP BY Companies.ID, 
       Companies.Company
于 2013-02-05T11:31:26.533 に答える