如何在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里并没有这个东西,所以用不了哦。
最后再验证下你的场景:
你的表数据是:
| Index | Sensor |
|---|---|
| 1 | BME280 |
| 2 | BMP280 |
用SELECT Index FROM Sensor WHERE Sensor = 'BME280';执行后,会返回:
| Index |
|---|
| 1 |
完全符合你想要的结果~
备注:内容来源于stack exchange,提问作者Jibun no Kage
相关产品推荐
相关产品推荐

