簡體   English   中英

如何將這3條SQL查詢的輸出(一條記錄)合並到一條輸出記錄中?

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM