Q
結果中的重複行
0
A
回答
2
我不認爲加入distinct
會給你正確的結果,我認爲真正的問題是,你只參加rides
表上的一個外鍵(idRide)和而不是其他(idUser)。
此外,混合隱式連接(在from子句中)與顯式連接(使用join關鍵字)不是一個好主意 - 最好是一致地使用顯式連接。
我相信正確的查詢應該是:
SELECT
register.IdRide,
users.IdUser,
users.Name,
(CASE WHEN rides.IdRide IS NOT NULL THEN 1 ELSE 0 END) As IsDriver
FROM
register
JOIN
users ON register.IdUser = users.IdUser
LEFT JOIN
rides ON rides.IdUser = users.IdUser
AND rides.IdRide = register.IdRide
WHERE
register.IdRide IN (1) ;
與樣品的數據,這將返回:
| IdRide | IdUser | Name | IsDriver |
|--------|--------|------|----------|
| 1 | 1 | | 1 |
| 1 | 2 | | 0 |
| 1 | 3 | | 0 |
簡單地增加distinct
將標誌着ID用戶爲IsDriver = 1,這,看着數據,似乎不正確。
0
使用不同
SELECT distinct register.IdRide, users.IdUser, users.Name,
(CASE WHEN rides.IdRide IS NOT NULL THEN 1
ELSE 0
END
)As IsDriver
FROM
register,
users
LEFT JOIN rides ON
users.IdUser =rides.IdUser
WHERE
register.IdRide IN (1)
AND register.IdUser = users.IdUser
+0
這很可能不會返回正確的結果,因爲缺失的連接條件會導致將IdUser 2標記爲驅動程序,因爲它只應該是IdUser 1。 – jpw
相關問題
- 1. 刪除結果集中的重複行
- 2. 重複結果
- 3. 重複的結果()
- 4. 如何在SQLite中重複結果行?
- 5. JTable重複結果
- 6. Scrapy結果重複
- 7. XPath的結果與重複
- 8. 重複結果的[CLIPS]
- 9. 避免重複的結果?
- 10. MySql的重複結果php
- 11. 重複的搜索結果
- 12. 發送結果res.render顯示重複行
- 13. 查詢結果中的重複項
- 14. 序言中的重複結果
- 15. 隱藏ListBox中的重複結果?
- 16. 在JOIN中重複的SQL結果 - Codeigniter
- 17. Oracle SQL Plus中的重複結果
- 18. WCF中的LINQ返回重複結果
- 19. 重複掃描wifi結果中的SSID
- 20. 刪除SQL結果中的重複項
- 21. 聯盟相結合的結果與重複的行
- 22. 重複運行旁邊的MySQL結果中的數字
- 23. 查找結果重複
- 24. SQL返回重複結果
- 25. 分頁codeigniter重複結果
- 26. MySQL LEFT JOIN重複結果
- 27. Django Tables2重複結果
- 28. 重複查詢結果
- 29. 刪除重複結果sql
- 30. Informix防止重複結果
只需添加'distinct' [DEMO小提琴(http://sqlfiddle.com/#!9/eaa3bb/3) – Crazy2crack
雖然有準備的小提琴是偉大的,它是很好,如果查詢實際上是在問題中(連同最小的表格定義和重現問題所需的數據),因爲外部鏈接可能不可靠,並且可能在未來消失。 – jpw
@jpw:好的,謝謝你的建議。 –