【问题标题】:how to write multiple select queries in single procedure?如何在单个过程中编写多个选择查询?
【发布时间】:2013-02-07 21:04:45
【问题描述】:

我必须将表格设置为: 表 1:

UID | COLLEGE_NAME | COLLEGE_ADDRESS
------------------------------------

表2:

UID | COMPANY_NAME | COMPANY_ADDRESS
------------------------------------

我有 2 个查询:

select * from table1 where uid='$uid';   
select * from table2 where uid='$uid';

我想在一个过程中编写这两个查询。

【问题讨论】:

  • 你想合并他们的结果吗?
  • 是的,我还必须合并结果。

标签: mysql sql stored-procedures phpmyadmin


【解决方案1】:

单个过程中多个选择查询的结构:

CREATE PROCEDURE 样本(l_uid INT)BEGIN

SELECT * FROMcollege_edu WHEREuid= l_uid;

SELECT * FROM work_experience WHERE uid= l_id;

END

【讨论】:

    【解决方案2】:

    这是创建STORED PROCEDURE的语句。

    DELIMITER $$
    CREATE PROCEDURE procedureName(IN _uid VARCHAR(15))
    BEGIN
        SELECT UID, COLLEGE_NAME name, COLLEGE_ADDRESS address
        FROM    table1
        WHERE uid = _uid
        UNION ALL
        SELECT UID, COMPANY_NAME name, COMPANY_ADDRESS address
        FROM    table2
        WHERE uid = _uid
    END $$
    DELIMITER ;
    

    注意UNION 上有ALL 关键字,用于在结果列表中添加重复记录。但如果您更喜欢UNIQUE,请删除UNION 上的ALL 关键字。

    【讨论】:

    • 如果我不想合并结果,我只想在过程中继承多个选择查询呢?
    • @HarjeetJadeja 你为什么接受这个答案?有了这个答案,您就会失去关于该 UID 是用于大学还是公司的信息。
    【解决方案3】:

    下面的代码可能会为您服务。此外,额外的 tbl 列将让您知道您的数据来自哪个表,这将有助于进一步操作。

     SELECT UID, COLLEGE_NAME name, COLLEGE_ADDRESS address , 1 as tbl
        FROM    table1
        WHERE uid = _uid
        UNION ALL
        SELECT UID, COMPANY_NAME name, COMPANY_ADDRESS address , 2 as tbl
        FROM    table2
        WHERE uid = _uid
    

    【讨论】:

    • 如果我不想合并结果,我只想在过程中继承多个选择查询呢?
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-07-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多