假设您从 Web 服务器到 DBA 服务器的连接速度极慢,并且您需要执行一系列的三个查询来处理单个 Web 请求。有没有办法将查询合并为一个?假设以下场景

person.id person.name 
1         James 
2         Stacy 

.

country.id country.name 
1          USA 
2          UK 

.

location.person_id location.country_id 
1                  1 
1                  2 

Web 表单将发布两个变量,即 name="James"country="China"并且您要执行以下操作

  • “James”是否存在,如果不存在,则插入james
  • “中国”是否存在,如果不存在,插入china
  • “James”是否住在“中国”,如果不是则插入关系

比如

select person.id, country.id, location.person_id 
from person, country, location 
where 
    person.name="James" and 
    country.name="China" and 
    person.id=location.id and country.id=location.country_id 

上面的查询没有用,因为如果人、国家或位置不存在,它将不会返回任何记录。

我知道可以使用存储过程来执行此操作,但并非所有数据库都支持存储过程。

请您参考如下方法:

解决方法很简单

SELECT (SELECT person.id from person WHERE person.name = 'James') as Name, 
       (SELECT country.id from country WHERE country.name="China") as Country, 
       (SELECT location.person_id from location WHERE person.id = location.id and country.id = location.country_id and person.name = 'James' and country.name="China") as Location 


评论关闭
IT序号网

微信公众号号:IT虾米 (左侧二维码扫一扫)欢迎添加!