【问题标题】:How to select statement to avoid duplicated item如何选择语句以避免重复项
【发布时间】:2016-06-12 07:49:21
【问题描述】:

我可以知道如何选择一个不重复的项目吗?事情是这样的。

我在学生表的第一列有相同的值(例如:studentid = 123)。

帐户表中的另一列具有相同的值(123)。

如果我只想在学生表内部连接帐户表中选择一个值,我该怎么办?我使用distinct,但它仍然给出两个值,因为其他列有不同的值。

当前查询:

SELECT DISTINCT SAS_Student.SASI_MatricNo
    ,SAS_Student.SASI_Name
    ,SAS_Student.SASI_PgId
    ,SAS_Student.SASI_ICNo
    ,SAS_Student.SASI_CurSem
    ,SAS_AccountsDetails.TransTempCode
    ,SAS_AccountsDetails.TempAmount
    ,SAS_AccountsDetails.TempPaidAmount
    ,SAS_AccountsDetails.PostStatus
    ,SAS_AccountsDetails.Ref1
    ,SAS_AccountsDetails.NoKelompok
    ,SAS_AccountsDetails.NoWarran
    ,SAS_AccountsDetails.AmaunWarran
    ,SAS_AccountsDetails.noAkaunPelajar
    ,SAS_AccountsDetails.StatusBayaran
FROM SAS_AccountsDetails
INNER JOIN SAS_sponsorinvoice ON sas_sponsorinvoice.creditref1 = SAS_AccountsDetails.ref1
    OR sas_sponsorinvoice.creditref1 = SAS_AccountsDetails.refcode
INNER JOIN sas_student ON sas_sponsorinvoice.creditref = sas_student.sasi_matricno
WHERE sas_sponsorinvoice.batchcode = 'B000000000000303'

SASI_MatricNo SASI_Name                SASI_PgId SASI_ICNo      SASI_CurSem TransTempCode        TempAmount TempPaidAmount PostStatus Ref1  NoKelompok NoWarran AmaunWarran noAkaunPelajar StatusBayaran
"160553"      "RATHIYMALER A/P MANIAM" "32"      "911229086066"           2 "TRT000000000000054"          0              0 "Ready"    "001" ""         ""                 0 ""             ""
"160553"      "RATHIYMALER A/P MANIAM" "32"      "911229086066"           2 ""                            0              0 "Posted"   "001" ""         ""                 0 ""             ""
"160553"      "RATHIYMALER A/P MANIAM" "32"      "911229086066"           2 "TRT000000000000019"          0              0 "Ready"    "001" ""         ""                 0 ""             ""

【问题讨论】:

  • 给出一些示例数据和预期输出。如何选择要包含在结果集中的记录?
  • 向我们展示您的尝试、您的表格、查询和预期输出
  • 这也是和mysql或postgresql有关吗?
  • 如果你希望每个学生ID只有一行,你如何选择哪一行?
  • DISTINCT 删除重复行。如果您有两行在两列中具有相同值但在其他列中具有不同值,那么DISTINCT 应该保留哪一行?这不是SQL 可以做的决定;它不会删除任何一个并返回两者。

标签: mysql sql postgresql


【解决方案1】:

简单的解决方案是添加到查询的末尾

Order By --(condition to bring the desired record to the top of the list)--
Limit 1

这将只返回结果集的第一行。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2022-01-09
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2022-06-14
    • 1970-01-01
    相关资源
    最近更新 更多