从Mysql中选择最新记录时遇到麻烦

时间:2014-04-04 16:20:16

标签: php mysql sql

我在选择最新记录时遇到了一些问题(最后一个记录已导入) 当我尝试从一个表中选择持续记录时,它不会真正选择最后一个 例如,如果我现在就跑:

SELECT * FROM Lat ORDER BY Lat DESC LIMIT 1

它会给我输出' XX.34148035'而不是' XX.34142197'(当我手动转到PMA的最后一页(7)时,我看到XX.34142197 ...)

所以我的想法是检查A_I选项并选择最高ID。 然后再次运行查询,

SELECT * FROM Lat ORDER BY ID DESC LIMIT 1

这次它有效,是的。 所以现在我对其他表做了完全相同的事情,但是当我运行查询时:

SELECT * FROM (Lat, Lng) ORDER BY ID DESC LIMIT 1

我收到错误:

Column 'ID' in order clause is ambiguous

我可以理解,但不知道修复...... 在此之后我被卡住了,谷歌搜索了很多,但它非常令人困惑...... 如果有人可以帮助我,或者给我一个提示,那将是非常好的...... 此外,我发现当我使用

SELECT * FROM Lat,Lng

输出结果为:

+-----+-------------+-----+------------+
| ID  | Lat         | ID  | Lng        |
+-----+-------------+-----+------------+
|   1 | XX.34123183 |   1 | XX.64095977 |
|   2 | XX.34128739 |   1 | XX.64095977 |
|   3 | XX.3412688  |   1 | XX.64095977 |
|   4 | XX.34127248 |   1 | XX.64095977 |
|   5 | XX.34126652 |   1 | XX.64095977 |
|   6 | XX.3412708  |   1 | XX.64095977 |
|   7 | 52.34127314 |   1 | XX.64095977 |
|//some record laters....(yes 181 is last)
| 179 | XX.34145865 |   1 | XX.64095977 |
| 180 | 52.34144137 |   1 | XX.64095977 |
| 181 | XX.34142197 |   1 | XX.64095977 |
|   1 | XX.34123183 |   2 | XX.64226005 |
|   2 | XX.34128739 |   2 | XX.64226005 |
|   3 | XX.3412688  |   2 | XX.64226005 |
|   4 | XX.34127248 |   2 | XX.64226005 |

我以为它会更像这样......

+-----+-------------+   +-----+-------------+
| ID  | Lat         |   | ID  | Lng         |
+-----+-------------+   +-----+-------------+
|   1 | XX.34123183 |   |   1 | XX.32535611  |
|   2 | XX.34128739 |   |   2 | XX.32565655  |
|   3 | XX.3412688  |   |   3 | XX.32525515  |
|   4 | XX.34127248 |   |   4 | XX.325255555 |

我在这里做错了什么?

谢谢!

2 个答案:

答案 0 :(得分:0)

如果查询中涉及两个或多个表,并且这些表包含相同的列名,则需要指定要对哪个表进行操作。歧义是因为LatLng表都包含列ID,并且查询处理器不知道用于排序结果的ID

例如,要按Lat表格的ID列排序,您需要将Lat.ID指定为:

SELECT * FROM (Lat, Lng) ORDER BY Lat.ID DESC LIMIT 1

答案 1 :(得分:0)

SELECT 
    *
FROM
    lat
        JOIN
    lng USING (id)
ORDER BY lat.id DESC

试试这个。你想加入表格