如何在单个过程中编写多个选择查询?
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
*FROM
college_eduWHERE
uid= l_uid;
SELECT
*FROM
work_experienceWHERE
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
【讨论】:
如果我不想合并结果,我只想在过程中继承多个选择查询呢?以上是关于如何在单个过程中编写多个选择查询?的主要内容,如果未能解决你的问题,请参考以下文章
如何使用“构造函数”在“选择子句”中为多个表的选定列编写HQL JOIN查询