我有一张桌子上有很多关于一个人的字段,然后有一些其他人的建议。
他们被命名为:
" recommendation_1_name
" " recommendation_1_company
" ' recommendation_1_contact
"
" recommendation_2_name
" " recommendation_2_company
" " recommendation_2_contact
"
等等。
我想提出一个声明,只允许我得到建议。
我将一个excel文件导入到表中,因此它只是一个大表。
这就是我所拥有的,它返回一个空集。
select * from questionnaire where 'COLUMN_NAME' like '%recommendation%';
我一直在玩它只制作一张只包含推荐字段的表,但它仍然没有返回任何内容。
答案 0 :(得分:0)
Mysql:从(table)中选择recommendation_1_name,recommendation_2_name等...(USER)=(USERID),或者你可以唯一地标识该用户。
答案 1 :(得分:0)
您确实需要规范化架构。
但就像其他一些案例的实验和例子(也许有人真的需要它)。以下是使用存储过程解决此案例的解决方案:
CREATE PROCEDURE `get_recommendations`()
BEGIN
DECLARE Q VARCHAR(100);
DECLARE C_NAME VARCHAR(100);
DECLARE cur CURSOR FOR SELECT GROUP_CONCAT(column_name) as `columns`
FROM INFORMATION_SCHEMA.COLUMNS
WHERE TABLE_SCHEMA = 'test'
AND TABLE_NAME ='questionnaire'
AND COLUMN_NAME LIKE '%recommendation%'
;
SET Q = 'SELECT ';
OPEN cur;
FETCH cur INTO C_NAME;
SET Q = CONCAT(Q,C_NAME,' ');
CLOSE cur;
SET @Q = CONCAT(Q,'FROM questionnaire;');
PREPARE stmt FROM @Q;
EXECUTE stmt ;
END
不要忘记用您的真实数据库名称替换TABLE_SCHEMA = 'test'
。