我有两张桌子:
RUNS
ID numb bay0 bay1 bay2
-----------------------------
1 55 aa bb cc
2 66 gg NULL dd
3 77 dd bb NULL
DATA
ID run_id serial data
------------------------------
1 2 gg xx
2 2 dd xx
DATA.run_id是指向RUNS.ID的外键.
‘serial’和’bay%’的值是指向另一个表’products’的外键.
我想要的是这样的输出:
OUTPUT
ID run_id serial data bay
------------------------------
1 2 gg xx bay0
2 2 dd xx bay2
这样第一个表的列标题被放入第二个表数据的输出行.
我一直在玩很多查询,以获得列标题:
SELECT COLUMN_NAME
FROM INFORMATION_SCHEMA.COLUMNS
WHERE TABLE_NAME = 'a'
AND TABLE_SCHEMA = 'b'
AND COLUMN_NAME LIKE 'bay%'
但最终我无法看到我将如何获取/合并/连接此输出.有人能帮我吗?
谢谢
最佳答案 如果列数已修复,则可以执行以下操作:
SELECT
data.id, data.run_id, data.serial, data.data,
CASE data.serial
WHEN runs.bay0 THEN 'bay0'
WHEN runs.bay1 THEN 'bay1'
WHEN runs.bay2 THEN 'bay2'
ELSE NULL
END AS bay
FROM
data
JOIN runs ON (data.run_id = runs.id)
只需在CASE语句中列出所有可能的变体.不优雅,但在将bayX列添加/删除到数据表之前一直有效.