如何在单个输出记录中组合这3个SQL查询的输出(单个记录)?

时间:2017-05-23 14:32:40

标签: mysql sql database rdbms

我不是那么进入数据库而且我有以下问题(我正在使用MySql)。

我必须以下列方式将3个查询的输出集成到单个记录中。

我有这三个查询:

QUERY 1:

select id_1, field_1.1, field_1.2,............., field_1.n where id=1;

返回包含以下内容的单条记录

field_1.1, field_1.2,...............,field_1.n

QUERY 2(用于获取用户名):

select value from settings where setting_name = 'username';

它将始终返回单个记录,如:

my_username

3)(用于获取密码):

select value from settings where setting_name = 'password';

它将始终返回单个记录,如:

my_password

我必须创建一个单独的查询,将这3个查询的输出组合在一个输出记录中,如下所示:

field_1.1, field_1.2,...............,field_1.n, my_username, my_password

正如您所看到的那样,它以查询1返回的单个记录的值开头,后跟查询2返回的单个值,后跟查询3返回的单个值。

如何使用SQL执行此类操作?

3 个答案:

答案 0 :(得分:1)

最简单的方法是在查询1的选择中使用查询2和3以及子查询:

select id_1, 
       field_1.1, 
       field_1.2,............., field_1.n,
      (select value from settings where setting_name = 'username') as my_username, --Query2
      (select value from settings where setting_name = 'password') as my_password  --Query3
from  table
where id=1;

答案 1 :(得分:0)

如果您更喜欢JOIN语法,则可以执行以下操作:

select 
  t.id_1, t.field_1.1, t.field_1.2,............., t.field_1.n, 
  s1.`value` as as my_username, 
  s2.`value` as as my_password 
from  table1 t
join settings s1 on (s1.setting_name = 'username')
join settings s2 on (s2.setting_name = 'password')
where t.id=1;

注意,value是保留关键字,你必须像`value`一样逃避。我还必须在原始表字段前加上明确的前缀。

答案 2 :(得分:0)

请试试这个......

select id_1, field_1.1, field_1.2,.., field_1.n, u.username, p.password 
from <table 1>
left join
(select value as username from settings where setting_name = 'username') u
on (1=1)
left join
(select value as password from settings where setting_name = 'password') p
on (1=1)
where id=1