如何选择没有ID字段的SQL表的最后10行?

Edw*_*uay 22 mysql sql phpmyadmin

我有一个25000行的MySQL表.

这是一个导入的CSV文件,所以我想查看最后十行以确保它导入所有内容.

但是,由于没有ID列,我不能说:

SELECT * FROM big_table ORDER BY id DESC
Run Code Online (Sandbox Code Playgroud)

什么SQL语句会告诉我这个表的最后10行?

表的结构就是这样:

columns are: A, B, C, D, ..., AA, AB, AC, ... (like Excel)
all fields are of type TEXT
Run Code Online (Sandbox Code Playgroud)

Iva*_*van 23

这里的所有答案都更好,但以防万一......有一种方法可以获得10个最后添加的记录.(你这是非常不可靠:))你仍然可以做类似的事情

SELECT * FROM table LIMIT 10 OFFSET N-10
Run Code Online (Sandbox Code Playgroud)

N - 应该是表中的总行数(SELECT count(*)FROM table).您可以使用准备好的查询将其放在单个查询中,但我不会深入研究.

  • 我非常有信心MySQL支持OFFSET.如果不是我在过去5年中创建的所有网站都陷入了深深的麻烦:D很可能是它不适合你的原因,那就是你没有看到我的答案.您必须在查询中用表中的多个行替换N. 所以结束查询应该看起来像SELECT*FROM表LIMIT 10 OFFSET 1579-10或类似的东西.而且我很遗憾有可能使用准备好的查询在一个查询中得到这个.但是,对于这个答案,不是关于MySQL语法,而是关于你如何做到这一点. (4认同)

Ste*_*ott 18

从表中选择,使用ORDER BY __ DESC按相反顺序排序,然后将结果限制为10.

SELECT * FROM big_table ORDER BY A DESC LIMIT 10
Run Code Online (Sandbox Code Playgroud)


Ton*_*ony 15

SQL表没有隐式排序,顺序必须来自数据.也许您应该在表中添加一个字段(例如,一个int计数器)并重新导入数据.

但是,这只会给出导入的顺序而不是数据.如果您的数据没有订购,您必须找出如何添加它.

编辑:你说

......确保它导入了所有东西.

使用行计数有什么问题?

  • +1 - OP应该把他的桌子想象成一个装满文件的文件夹.他们都有关于他们的信息,但每页都没有日期,这是"第一"?哪个是"最后一个"? (2认同)
  • 确实; 在提出这个问题之前,你必须在数据中定义"last".auto_increment字段可能是最好的解决方案; 应该以与CSV文件相同的顺序结束在数据库中.虽然我不认为它在技术上有保证,取决于进口商. (2认同)
  • @Edward:它只会给你主键物理排序中的行(除非数据聚集在另一个字段上),即使如此,SQL引擎返回的数据的顺序也不能*保证*在该顺序中命令。 (2认同)

Dus*_*dak 11

您可以使用"ORDER BY DESC"选项,然后按原始顺序将其放回:

(SELECT*FROM tablename ORDER BY id DESC LIMIT 10)ORDER BY id;

  • 在问题中很明显,没有id列 (2认同)

小智 6

SELECT * FROM big_table ORDER BY A DESC LIMIT 10
Run Code Online (Sandbox Code Playgroud)