You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何在MariaDB(类MySQL)中获取匹配行的唯一主键索引值

如何在MariaDB(类MySQL)中获取匹配行的唯一主键索引值

兄弟,我太懂你这种久不碰SQL突然卡壳的感觉了!你遇到的问题其实很典型——你的主键列名用了SQL的保留关键字,这才导致直接查询报错,咱们一步步理清楚:

首先,你的主键列叫Index,但INDEX本身是MySQL/MariaDB里用来创建索引的保留词,数据库看到你写SELECT INDEX时,会误以为你要执行和索引相关的系统操作,而不是查询这个列,自然就报错了。

给你几个实用的解决办法:

  • 用反引号包裹关键字列名(快速解决):把你的列名用反引号(`)包起来,明确告诉数据库这是一个列名,不是SQL关键字。比如你要查BME280对应的Index值,就写:

    SELECT `Index` FROM Sensor WHERE Sensor = 'BME280';
    

    执行后就能正确返回1这个结果,完美匹配你的需求。

  • 避免用保留关键字当列名(长期建议):虽然反引号能解决问题,但后续开发里尽量别用INDEX、SELECT、WHERE这类保留词当表名或列名,不然每次查询都要加反引号,容易忘还麻烦。比如可以把主键列改成SensorID或者ID,这样写查询会顺畅很多:

    SELECT SensorID FROM Sensor WHERE Sensor = 'BME280';
    

另外你提到之前好像用过ROWID或者INDEX(),那应该是混淆了不同数据库的语法啦——ROWID是SQLite里的隐式主键,MySQL/MariaDB里并没有这个东西,所以用不了哦。

最后再验证下你的场景:
你的表数据是:

IndexSensor
1BME280
2BMP280

用SELECT Index FROM Sensor WHERE Sensor = 'BME280';执行后,会返回:

Index
1

完全符合你想要的结果~

备注:内容来源于stack exchange,提问作者Jibun no Kage

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.04.23 12:32:40