簡體   English   中英

表中沒有主鍵時如何限制查詢的行結果

[英]How to limit Row result on query when no Primary Key in table

我是 SQL 的新手,因為 20 多年來我沒有接觸過任何一行代碼,所以感覺就像重新開始一樣。

我有一個包含兩個表的數據庫,一個用於項目,另一個用於里程碑。 我想要實現的是有一個查詢,該查詢將檢索為每個項目記錄的最新里程碑。 這樣我就可以用一個只有最新更新的項目行來構建報告。

我已設法構建查詢以檢索每個項目的 1(一)個里程碑記錄。 但是,當我在同一日期記錄了多個更新時,查詢會返回所有更新。 我試過使用 rowid,但沒有用。

這是我的示例表:

1個

當里程碑創建相同的日期時,我嘗試運行的查詢當前檢索超過 1 條記錄。

select  PROJECT_DATA.PARTNER_NAME as PARTNER_NAME,
  PROJECT_DATA.SOLUTION_STATUS as SOLUTION_STATUS,
  PROJECT_DATA.STRATEGY_MANAGER as STRATEGY_MANAGER,
  PROJECT_DATA.SOLUTION_TYPE as SOLUTION_TYPE,
  PROJECT_DATA.INTEGRATION_METHOD as INTEGRATION_METHOD,
  PROJECT_MILESTONE.MILESTONE as MILESTONE,
  PROJECT_MILESTONE.COMPLETED_ON as COMPLETED_ON,
  PROJECT_MILESTONE.NOTES as NOTES
       from PROJECT_DATA JOIN PROJECT_MILESTONE PROJECT_MILESTONE ON                                                       PROJECT_DATA.ID=PROJECT_MILESTONE.PROJECT_ID
       where PROJECT_MILESTONE.COMPLETED_ON = (Select MAX (PROJECT_MILESTONE.COMPLETED_ON)
                                   FROM PROJECT_MILESTONE
                                   WHERE PROJECT_DATA.ID=PROJECT_MILESTONE.PROJECT_ID)

關於如何在同一日期登錄時將查詢結果限制為 1(最新)的任何幫助都將非常有幫助。

假設 Completed on 有時間和日期,你需要做的就是 select top 1 in the ORDER BY DESC

就像是

    select top 1  PROJECT_DATA.PARTNER_NAME as PARTNER_NAME,
  PROJECT_DATA.SOLUTION_STATUS as SOLUTION_STATUS,
  PROJECT_DATA.STRATEGY_MANAGER as STRATEGY_MANAGER,
  PROJECT_DATA.SOLUTION_TYPE as SOLUTION_TYPE,
  PROJECT_DATA.INTEGRATION_METHOD as INTEGRATION_METHOD,
  PROJECT_MILESTONE.MILESTONE as MILESTONE,
  PROJECT_MILESTONE.COMPLETED_ON as COMPLETED_ON,
  PROJECT_MILESTONE.NOTES as NOTES
       from PROJECT_DATA JOIN PROJECT_MILESTONE PROJECT_MILESTONE ON
      PROJECT_DATA.ID = PROJECT_MILESTONE.PROJECT_ID
order by COMPLETED_ON DESC

另外,必須在joins中的“ON”之后指定join條件,然后您可以使用where條件過濾掉數據

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM