我不是那么进入数据库而且我有以下问题(我正在使用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执行此类操作?
答案 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