从名称是MySQL中另一个选择结果的列中进行选择

时间:2012-01-29 04:43:44

标签: mysql

是否有可能在一个声明中这样做? 如果我有

tab1           tab2
A              B
--     and     --
1              A

是否可以执行SELECT (SELECT B FROM tab2) FROM tab1之类的操作并获取'1'。我试过这个,它只返回'A'。

3 个答案:

答案 0 :(得分:0)

您可能必须先执行内部查询。然后在外部查询中使用结果。它应该工作。请确保正确使用引号字符。

答案 1 :(得分:0)

DECLARE
    holdvalue table2.B%TYPE;
    stmt VARCHAR(200);
    record VARCHAR(200);
BEGIN
    select B into holdvalue from table2;
    stmt :='SELECT ' || holdvalue || ' from table1';
    DBMS_OUTPUT.PUT_LINE('Query: ' || stmt);
    EXECUTE IMMEDIATE stmt INTO record;
    DBMS_OUTPUT.PUT_LINE('Record: ' || record); 
END

这是PL / SQL解决方案。

然而,对于没有PL / SQL的mysql,我认为我们不能。

答案 2 :(得分:0)

我认为使用动态SQL的这个过程应该有效:

DELIMITER //    

CREATE PROCEDURE a_procedure()
BEGIN 
    SELECT A FROM tab2 INTO @col;

    SET @query = CONCAT('SELECT ', @col, ' FROM tab1');
    PREPARE getValue FROM @query;
    EXECUTE getValue;
    DEALLOCATE PREPARE getValue;
END//

DELIMITER ;