我想從表中檢索行中所有兩列的值與另一個roe中的其他兩個值相匹配的所有行,例如我有gps co-ords在long和lat中分割,我想看到這些匹配在任何行?SQL語句思維不明顯
-8
A
回答
2
一個簡單GROUP BY
應該爲你工作:
SELECT Col1,Col2
FROM YourTable T
GROUP BY Col1,Col2
HAVING COUNT(*) > 1
請發表您已經嘗試什麼前進......
- 編輯 -
如果你看在返回所有具有相同緯度/經度的行時,則可以這樣工作:
SELECT *
FROM YourTable
WHERE (lat,lon) IN (
SELECT lat,lon
FROM YourTable
GROUP BY lat,lon
HAVING COUNT(*) > 1
)
1
你可以有一個where子句中的多個條件:
SELECT * FROM tbl1
WHERE tbl1.lat = tbl2.lat AND tbl1.long = tbl2.long
對於同一個表,你問你可以嘗試自聯接是這樣的:
SELECT t1.ID, t2.ID from myTable as t1
INNER JOIN myTable as t2
WHERE t1.lat = t2.lat and t1.long = t2.long
或者用組查看有多少,並可以通過子選擇或第二個查詢返回的經緯度得到實際記錄:
SELECT t.lat, t.lng, count(*) from myTable as t
GROUP BY (t.lat, t.long)
HAVING Count(*) >=2
與子選擇類似(可能需要調試):
SELECT * from myTable as t1,
(SELECT t.lat, t.lng from myTable as t
GROUP BY (t.lat, t.long)
HAVING Count(*) >=2) as t2
WHERE t2.lat = t1.lat and t2.long = t1.long
如果可以有很多條記錄有相同的緯度/多頭,我建議拉回經/緯使用組通過與具有條件2個或更多匹配,然後再次遍歷表格以獲取代碼中每對匹配的所有記錄。
+0
我只有使用類似於您的組的東西由我變得非常接近我想要什麼,但它只返回replicaed號的一個實例,即我已經進入這樣它應該返回2中的數據的一個表NAD行,但它只返回1. – user2096659 2013-02-21 19:06:27
+0
+1的幫助 - 謝謝。 – sgeddes 2013-02-21 19:12:53
相關問題
- 1. SQL語句不爲空時聲明
- 2. 不明錯誤JavaScript語句
- 3. 動態聲明語句SQL Server
- 4. SQL語句中聲明變量
- 5. 3+維MDX語句
- 6. 刪除語句掛在SQL Server沒有明顯的原因
- 7. SQL語句選擇語句
- 8. SQL語句行爲不同於SQL語句在phpMyAdmin
- 9. SQL Case語句不工作
- 10. Sql語句不執行
- 11. SQL語句不過濾行
- 12. SQL INSERT語句不工作
- 13. SQL WHERE語句不工作
- 14. sql語句不適合我
- 15. 短語SQL語句
- 16. MY SQL比較語句!不起作用的比較聲明
- 17. SQL語句 - SQL Matrix
- 18. 如果語句不顯示?
- 19. 功能語言的建築思維
- 20. SQL CASE語句
- 21. SQL CASE語句
- 22. SQL語句MySQL
- 23. CASE語句SQL
- 24. SQL語句
- 25. SQL語句
- 26. SQL IF語句?
- 27. SQL switch語句
- 28. SQL MAX語句
- 29. T-SQL語句
- 30. 笨SQL語句
+1。 。 。做一個加入的選擇只是令人不快。 – 2013-02-21 18:43:26
已經嘗試了一些與此類似的東西,即「select *」只是區別,但它只返回匹配值的一個實例。 – user2096659 2013-02-21 18:52:09
@ user2096659 - 看到這個例子小提琴 - 如果你可以輸入你的測試數據,而不是返回,我會看看:http://sqlfiddle.com/#!2/71e85/3 – sgeddes 2013-02-21 18:54:32