如何在单个过程中编写多个选择查询?

Posted

技术标签:

【中文标题】如何在单个过程中编写多个选择查询?【英文标题】: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';

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

【问题讨论】:

你想合并他们的结果吗? 是的,我还必须合并结果。 【参考方案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

【讨论】:

如果我不想合并结果,我只想在过程中继承多个选择查询呢?

以上是关于如何在单个过程中编写多个选择查询?的主要内容,如果未能解决你的问题,请参考以下文章

如何在单个 JDBC 连接中执行多个 JPA 查询

如何编写基于组合框选择的单个 sql 查询?

如何在查询中编写单个聚合

如何使用“构造函数”在“选择子句”中为多个表的选定列编写HQL JOIN查询

如何使用 Facebook 营销 api 在单个查询中获取所有广告的见解

如何编写JPA查询