[英]How can I combine the output (a single record) of these 3 SQL queries in a single output record?
我不太喜歡數據庫,並且遇到以下問題(我正在使用MySql)。
我必須以以下方式將3個查詢的輸出集成到單個記錄中。
我有以下3個查詢:
查詢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執行類似的操作?
最簡單的方法是在查詢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;
如果您喜歡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
是保留關鍵字,您必須像“值”一樣進行轉義。 我還必須給您的原始表字段加上前綴以明確。
請嘗試這個...
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
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.