Php MySQL动态选择列
我正在寻找按变量动态选择不同列名的查询 假设我有一个包含我要选择的动态列的列表,如下所示: 从'modules\u forms\u objects'中选择'ObjectID','ObjectLabel'` 我想将一个值列连接到第一个表,这将包含 匹配第二个表中的列。例如:对于ObjectID 72,该值将为NULL 最终,我希望我的结果如下: +----------+---------------+--------------------+ | ObjectID | ObjectLabel | Value | +----------+---------------+--------------------+ | 71 | Join Date |0000-00-00 00:00:00 | | 72 | Active | NULL | +----------+---------------+--------------------+ 当我使用传统连接时,我得到了每行的所有列,它看起来有点重Php MySQL动态选择列,php,mysql,sql,join,Php,Mysql,Sql,Join,我正在寻找按变量动态选择不同列名的查询 假设我有一个包含我要选择的动态列的列表,如下所示: 从'modules\u forms\u objects'中选择'ObjectID','ObjectLabel'` 我想将一个值列连接到第一个表,这将包含 匹配第二个表中的列。例如:对于ObjectID 72,该值将为NULL 最终,我希望我的结果如下: +----------+---------------+--------------------+ | ObjectID | ObjectLabel
有什么想法吗?非常感谢 使用“显示选项卡名称中的列”并使用“字段属性”获取相应的列 这将给出特定表中的所有列名
SELECT
GROUP_CONCAT(COLUMN_NAME)
FROM
INFORMATION_SCHEMA.COLUMNS
WHERE
table_name = 'mytable'
基本静态查询可能如下所示 选择m.ObjectID、m.ObjectLabel、q.Value 从模块\u表单\u对象m左连接 选择objectid, 案例对象 当你71岁时,你就71岁了` 当72那么'72` 终值 从'7'开始不能交叉连接 选择71 objectid UNION ALL 选择72 C Q 关于m.objectid=q.objectid 其思想是首先取消激活7表,然后将其与模块\窗体\对象外部连接 输出: | OBJECTID | OBJECTLABEL | VALUE | -----------|-------------|---------------------| | 71 | Join Date | 0000-00-00 00:00:00 | | 72 | Active | (null) |
这是演示你有很多很多衣服,不是吗?谢谢。你知道有没有什么方法可以改变这种动态?如果我这样做,我将不得不使用php来生成大小写语法,我正试图避免这种情况。@Dan,不客气。请参阅更新的答案。我刚刚演示了如何使用动态SQL实现这一点。你可以用一个存储过程来简化客户端PHP方面的事情。@丹,如果你觉得它是你要找的,请考虑答案。
SELECT
GROUP_CONCAT(COLUMN_NAME)
FROM
INFORMATION_SCHEMA.COLUMNS
WHERE
table_name = 'mytable'
| OBJECTID | OBJECTLABEL | VALUE |
-----------|-------------|---------------------|
| 71 | Join Date | 0000-00-00 00:00:00 |
| 72 | Active | (null) |