mysql - MYSQL查询表使用列位置,而不是列名
问题描述
是否可以编写如下查询?
UPDATE sale SET sale_order='123456789' WHERE **COLUMN_1** = 2
我没有明确传递列名?只有它的位置?
我可以获得列名,但我试图避免只为了获取它们而查询数据库。
谢谢。
解决方案
要回答您的问题,不,SQL 中没有按位置引用列的语法。这可以追溯到关系理论,在某种意义上,表是一组列,而一组的成员是无序的。
您要么必须知道列名,要么从数据库中查询它:
SELECT COLUMN_NAME FROM INFORMATION_SCHEMA.COLUMNS
WHERE TABLE_SCHEMA=SCHEMA() AND TABLE_NAME='sale'
AND ORDINAL_POSITION=1;
通过假设第一列是主键,您似乎正在尝试设计一个按主键更新行的查询。主键不一定是第一列。它不一定是整数。它不一定是单列。
因此,您已经在对表定义做出假设。您不妨假设主键列已命名id
或其他约定。
推荐阅读
- amazon-web-services - AWS 快速入门 Onica 相机连接器指南未能创建 CloudFormation 堆栈
- php - PHP 将表单数据发送到 Wordpress 中的特定 Mysql 数据库
- angular - Angular:事件发射器不发射任何值
- android - 5751-5751/? E/libprocessgroup: 无法创建和 chown /acct/uid_10058: 只读文件系统
- c# - 在.net中将多个事件类型添加到同一个kafka主题
- apache-kafka - debezium - 模式注册表问题
- python-3.x - 展平 Pandas DataFrame 添加后缀
- intellij-idea - Intellij IDEA 2021.2目前无法渲染markdown表?
- php - 如何强制文件使用特定版本的 php?
- python - 是否可以使用 AWS Textract 捕获 PDF 文本的特定部分?