有两个表,第一个包含数据,第一个基于类别的第二个元数据。
table1
id, category1, category2, custom1, custom2, custom3...
table2
category1, category2, denom, field
示例:
table1
AAAAA, Car, Compact, Red, Automatic, 150bhp
table2
Car, Compact, Color, custom1
table2中的“field”列指向table1中哪个字段包含元数据。
现在我要做的是以某种方式使用sql中'field'列的值作为列。
select * from table1
where table1.category1 = 'Car'
and table1.category2 = 'Compact'
and table1.category1 = table2.category1
and table1.category2 = table2.category2
and table2.denom = 'Color'
and table1.(value of table2.field) = 'Red'
这可以在单个sql语句中执行吗?
答案 0 :(得分:2)
如果您事先知道“自定义”列的数量,则可以。
你可以替换
and table1.(value of table2.field) = 'Red'
与
and case table2.field
when 'custom1' then table1.custom1
when 'custom2' then table1.custom2
when 'custom3' then table1.custom2
...
else NULL
end
= 'Red'