mysql - 查询动态 mysql 列

标签 mysql sql dynamic

以下是可能的吗?

SELECT f.*, (SELECT QUERY WHICH PULLS OUT A STRING VALUE) AS record_type
FROM foo f
AND f.record_type > 0

本质上我想查询一个动态列。我还尝试了以下我都没有运气的方法:

SELECT f.*
FROM foo f
AND f.(SELECT QUERY WHICH PULLS OUT A STRING VALUE) > 0

这在 mysql 中甚至可能吗?

最佳答案

目前还不完全清楚我们正在尝试做什么。

是的,我们可以在 SELECT 列表中包含一个子查询。 (限制是子查询必须返回一个列,并且返回不超过一行)。这将是一个返回的

返回的值不会被解释为对外部查询中列的引用。

我们可以在 HAVING 中引用子查询返回的值子句,例如

 SELECT f.id 
      , ( SELECT t.fee FROM t WHERE t.fi = 'fo' LIMIT 1 ) AS fum
   FROM f
 HAVING fum > 0

请注意,我们不能引用 fum在查询的 WHERE 子句中。

另请注意,我们没有资格 fumf.因为fum不是 f 中的列.

我们可以使查询成为一个内联 View ,然后外部查询可以引用 fumWHERE条款。

但就效率而言,所有这些都不太理想。查询将访问 f 中的每一行 , 以及 HAVING 中的条件访问所有行后,稍后应用子句。

同样...子查询返回的值是在结果集中返回的;这不会被解释为对 f 中列的引用。

除非是相关子查询,否则子查询将为 f 中的每一行返回相同的值,所以它本质上是一个字面值。

如果这是一个相关的子查询(包括对外部查询中 f 列的引用),那么可能是一个 JOIN操作将更好地满足规范。

同样,我们想要实现的目标并不完全清楚。


如果目标是对列的动态 引用,那么不,这不能在单个 SQL 语句中实现。

要使用 SQL 动态生成列引用,需要一个单独的 SQL 语句,然后可以使用该语句的结果生成我们要运行的 SQL 语句。

另一种方法是制作一个包含对多个列的静态引用的表达式,包括表达式中的逻辑,用于确定应该从哪些静态列引用中返回值。

关于mysql - 查询动态 mysql 列,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/51880181/

相关文章:

mysql - 在SQL中选择具有相同ID的另一行时字段的聚合总和

sql - 如何避免 Rails as_json 创建大量数据库请求

java - Android SQLite数据库版本,更改结构现在无法查看DB

c# - 在运行时动态调用 Web 服务

algorithm - 动态规划题

mysql - 一个表中的 SQL 行不在另一个表的多个字段中

php - 与 MySQL 数据库链接的 html 搜索表单

php - 使用php将XML数据插入mysql

java - ParseException 从未抛出

c++ - 动态链接列表 RPG 库存程序 - 帮助(如何链接到类?)