是否有可能在一个声明中这样做? 如果我有
tab1 tab2
A B
-- and --
1 A
是否可以执行SELECT (SELECT B FROM tab2) FROM tab1
之类的操作并获取'1'。我试过这个,它只返回'A'。
答案 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 ;