【发布时间】: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