如何在mySQL中动态选择列名

2023-12-26

我想选择列名,但我事先不知道表结构,并且它可能会改变,所以我不能只用列名对 select 语句进行硬编码。我也不想选择每一列。有没有简单的方法可以做到这一点?

我的想法是这两个查询的某种组合,但我的 SQL 不是那么好。

SHOW COLUMNS FROM table_name;
SELECT * FROM table_name; 

我尝试使用子选择,但它不起作用。似乎什么也没发生,我没有收到错误,我只是没有得到结果

SELECT (SELECT column_name 
        FROM information_schema.columns 
        WHERE table_name ='table_name') 
FROM table_name;

也许我需要加入? 无论如何,任何帮助都会很棒,谢谢


尝试这个SQLFiddle http://sqlfiddle.com/#!9/924e8/1:

CREATE TABLE atable (
  prefix1 VARCHAR(10)
  ,prefix2 VARCHAR(10)
  ,notprefix3 INT
  ,notprefix4 INT
);

INSERT INTO atable VALUES ('qwer qwer', 'qwerqwer', 1, 1);
INSERT INTO atable VALUES ('qwer qwer', 'asdfaasd', 1, 1);
INSERT INTO atable VALUES ('qwer qwer', 'qrt vbb', 1, 1);
INSERT INTO atable VALUES ('qwer qwer', 'sdfg sdg', 1, 1);

SELECT CONCAT('SELECT ', GROUP_CONCAT(c.COLUMN_NAME), ' FROM atable;')
INTO @query
FROM INFORMATION_SCHEMA.COLUMNS c
WHERE c.TABLE_NAME = 'atable'
  AND c.COLUMN_NAME LIKE 'prefix%'
ORDER BY c.ORDINAL_POSITION;

PREPARE stmt FROM @query;

EXECUTE stmt;

一些问题:

您可能需要对结果集进行某种 ORDER BY。

在连接和其他方面,您可以做的事情是有限的。

您将验证移至运行时,测试更有可能错过它。

您希望能够轻松处理架构更改。此技术将仅处理您可以预见的某种类型的架构更改,而对于其他类型,您可能无论如何都必须更改此代码。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

如何在mySQL中动态选择列名 的相关文章

随机推荐

  • JavaScript 中循环 2 个数组无法正常工作

    我有以下 JavaScript 代码 据我所知 该代码应该仅输出一次日期和相应的计算值 但是由于某种原因 我看到内部的输出不正确parseData日期记录两次并且值被覆盖的函数 我不确定是什么导致了这里的问题 这是可以使用 node js
  • 是否可以在 JavaScript 中实现动态 getter/setter?

    我知道如何为名称已知的属性创建 getter 和 setter 方法如下 A trivial example function MyObject val this count 0 this value val MyObject protot
  • 使用 SheetJS 将包含合并单元格的 .xlsx 文件转换为 JSON

    我正在尝试使用 SheetJS 读取 xlsx 文件并将其转换为 JSON 我能够读取简单的 没有合并单元格 xlsx 文件并将其转换为 JSON 但我无法正确处理合并单元格 问题是我有一个 xlsx 文件 其中包含不同语言的产品 我尝试在
  • MVC 嵌套视图和部分视图

    我正在使用 MVC 3 创建原型项目 我遇到了一种情况 我似乎无法找到答案 而且似乎我可能以错误的方式处理问题 我的项目的快速概述 它基于您通过 Visual Studio 获得的 MVC 模板 我使用提供的 Layout 视图上的链接 选
  • 使用 AMD 和 webpack 在浏览器中拉入 sinon 子模块

    我遇到了中描述的相同问题这个问题 https stackoverflow com questions 20570301 typeerror undefined is not a function evaluating sinon spy 基
  • 将方法传递给整个对象,还是传递该对象的属性,哪个性能更高?

    考虑以下示例 我需要检查 CouponModel 是否有唯一的序列号 我有两个选择 CouponModel model GetFromSomewhere if CouponHasUniqueKey model or if CouponHas
  • 如何判断Dart列表是否是固定列表?

    如何在运行时确定 Dart 中的列表是否是 固定列表 在 Dart 中 至少 有三种创建固定长度列表的方法 var fixed new List 5 fixed at five elements var alsoFixed new List
  • 在 WPF 中打开模式对话框时主窗口呈灰色

    当从主窗口打开模式对话框时 我想用灰色覆盖主窗口 WPF中有没有标准的解决方案来模拟这种效果 这里有一个例子 没有内置的功能 但它应该很容易实现 在主窗口中 您需要在顶层有一个没有定义的列或行的网格 因此它只是一个占据所有客户区域的单元格
  • 在文本字符串中查找特定术语并在上一列中返回该术语

    由于某种原因 我无法弄清楚第一个返回是否有效 但是当我向下拖动时 其他结果返回为 VALUE IF FIND Drummondville B3 gt 0 Drummondville IF FIND Saint Germain de gran
  • 检查设备是否可以使用 Cordova 解码视频

    我在用着VR view https developers google com vr concepts vrview在我的 Ionic Cordova 应用程序中 VR view 的文档指出 某些较旧的设备无法解码大于 1080p 1920
  • 设置 RStudio Portable 默认 R 版本

    我最近发现了 R 和 RStudio 的便携式版本 http rportable sourceforge net http rportable sourceforge net 开源岩石 无论如何 我在大学里从一台电脑跳到另一台电脑 我想让
  • 如何以 Rails 形式链接下拉菜单

    如何在 Rails 页面上链接下拉菜单 两个下拉列表都来自数据库 例如 如果第一个下拉列表是category 即将形成category桌子 第二次下降 products 也来自数据库 将根据第一个下拉菜单的选择进行填充 您可以使用 coll
  • SQL Server 中有类似“生存时间”的选项吗?

    SQL Server 中有类似 生存时间 的选项吗 最近我了解了Scylla DB中的Time to Live 我想知道跨数据库尤其是 SQL Server 是否可以使用相同的选项 我在 Internet 上搜索过 但找不到 SQL Ser
  • SQL对多个表建立索引,可以做到吗?

    一直在寻找解决方案一段时间了 转到 1 或 2 跳过描述 首先我会解释一下情况 我公司已经升级了我们的 erp 系统 我的主要工作是创建公司其他人使用的列表 我从该系统数据库中获取所有数据 在升级过程中 我们转换了一些数据以匹配新版本 其中
  • 什么是 MySQL 外键?

    在 Stack Overflow 的一个回答中 我看到了这段代码 CREATE TABLE Favorites user id INT NOT NULL movie id INT NOT NULL PRIMARY KEY user id m
  • Sql - SELECT 行,直到行的总和达到某个值

    我在这里看到了其他类似的问题 但它们并不能完全满足我的需求 至少我是这么认为的 我有一个包含以下列的 receipts 表 收据 客户ID 数量 让我们说 我有 5 张来自客户 1 的未付款收据 reciept id 1 Ammount 1
  • 如何链接到 boost date_time

    Example 我有一个 Rcpp 函数 我想调用它boost posix time time from string 我从以下位置获取了示例代码增强文档 https www boost org doc libs 1 65 0 doc ht
  • Java包循环检测:如何找到涉及的具体类? [关闭]

    Closed 此问题正在寻求书籍 工具 软件库等的推荐 不满足堆栈溢出指南 help closed questions 目前不接受答案 您推荐什么工具来检测Java包循环依赖 知道目标是明确列出检测到的 跨包循环 中涉及的特定类 我知道关于
  • ASP.NET 中的基本表单身份验证有多安全?

    想象一下 您有一个只有 2 个页面的简单网站 login aspx 和 Secret aspx 仅使用 ASP net 表单身份验证和 login aspx 上的 ASP net 登录服务器控件来保护您的站点 详情如下所示 该站点配置为使用
  • 如何在mySQL中动态选择列名

    我想选择列名 但我事先不知道表结构 并且它可能会改变 所以我不能只用列名对 select 语句进行硬编码 我也不想选择每一列 有没有简单的方法可以做到这一点 我的想法是这两个查询的某种组合 但我的 SQL 不是那么好 SHOW COLUMN