我有2个表格。一位名为购买与在子查询中动态设置列名称
(ID,一个月,购买,STOREID)
另一种叫purchases_targets与
(ID,STOREID,目标1,TARGET2, target3,target4,target5,target6,target7,target8,target9,target10,target11,target12)
purchases_targets中的列名称与月份相对应,即月份1 = target1的目标。 正常化这不是我的选择! 我想要做的是类似于以下内容。
SELECT DISTINCT
purchases.month,
purchases.purchase,
CONCAT('target',purchases.month) AS column_name,
(SELECT
column_name
FROM purchases_targets
WHERE storeid = 1) AS 'target'
FROM purchases
WHERE purchases.storeid = 1
注意使用上述列名的。我试过这个,结果总是返回目标列的目标+月份。我想知道是否有一种方法可以使这个工作在MySQL中。让我知道是否需要更多信息。谢谢
你需要使用动态SQL与'PREPARE',你不能在一个普通的查询计算列名。 – Barmar
我已经看过你在说什么的例子,但是它们都不属于子查询。我如何在我的情况下使用PREPARE方法。 – castle
这似乎是一个设计不佳的模式。为什么不有一个月份列的值为1到12? – Barmar