我遇到了一個我試圖運行的查詢的問題。該查詢獲取3個獨立的select查詢(每個查詢都可以自己工作),但是我將它們全部拼接成單個結果。其中2個選項包含相同的字段,但第3個包含不同的字段,我想知道是否有任何我可以做的事情,而不是將查詢拆分成2個單獨的字段。在這一分鐘,它給了我錯誤1241.具有不同字段名稱的SQL多選查詢?
它工作正常,當我結合第一和第三選擇語句在一起,但顯然中間查詢有不同的字段名稱和數據出來。只是不確定是否可以將sql數據提取到數組中,會更容易!
歡呼聲,安德魯
SELECT(
SELECT CONCAT_WS(' ', `cas_users`.`first_name`, `cas_users`.`last_name`) AS `name`, `cas_users`.`email`, `cas_users`.`meta`, `cas_users`.`id`
FROM `cas_users`
INNER JOIN `cas_connected`
ON `cas_connected`.`freelancer_hash` = `cas_users`.`hash`
WHERE `cas_connected`.`employer_hash` = 'd4735e3a265e16eee03f59718b9b5d03019c07d8b6c51f90da3a666eec13ab35'
AND `cas_connected`.`stage` = '0'
AND `cas_users`.`expiry` > '1331165519'
) AS `c_p`, (
SELECT `name`, `email`, `phone`, `invited`
FROM `cas_not_connected`
WHERE `employer_hash` = 'd4735e3a265e16eee03f59718b9b5d03019c07d8b6c51f90da3a666eec13ab35'
) AS `nc`, (
SELECT CONCAT_WS(' ', `cas_users`.`first_name`, `cas_users`.`last_name`) AS `name`, `cas_users`.`email`, `cas_users`.`meta`, `cas_users`.`id`
FROM `cas_users`
INNER JOIN `cas_connected`
ON `cas_connected`.`freelancer_hash` = `cas_users`.`hash`
WHERE `cas_connected`.`employer_hash` = 'd4735e3a265e16eee03f59718b9b5d03019c07d8b6c51f90da3a666eec13ab35'
AND `cas_connected`.`stage` = '1'
AND `cas_users`.`expiry` < '1331165519'
) AS `c_e`
編輯:
這是我得到了最終使用的代碼,採取了全外的優勢加入解決方法。也許矯枉過正,但確保只有1個數據庫旅程來獲取我需要的所有數據。只要他們保證不匹配:
SELECT * FROM (
SELECT CONCAT_WS(' ', `cas_users`.`first_name`, `cas_users`.`last_name`) AS `name`, `cas_users`.`email` AS `email1`, `cas_users`.`meta`, `cas_users`.`id` AS `id1`, `cas_connected`.`stage`
FROM `cas_users`
INNER JOIN `cas_connected`
ON `cas_connected`.`freelancer_hash` = `cas_users`.`hash`
WHERE `cas_connected`.`employer_hash` = 'd4735e3a265e16eee03f59718b9b5d03019c07d8b6c51f90da3a666eec13ab35'
AND `cas_connected`.`stage` = '0'
AND `cas_users`.`expiry` > '1331173687'
UNION
SELECT CONCAT_WS(' ', `cas_users`.`first_name`, `cas_users`.`last_name`) AS `name`, `cas_users`.`email` AS `email1`, `cas_users`.`meta`, `cas_users`.`id` AS `id1`, `cas_connected`.`stage` FROM `cas_users`
INNER JOIN `cas_connected`
ON `cas_connected`.`freelancer_hash` = `cas_users`.`hash`
WHERE `cas_connected`.`employer_hash` = 'd4735e3a265e16eee03f59718b9b5d03019c07d8b6c51f90da3a666eec13ab35'
AND `cas_connected`.`stage` = '1'
AND `cas_users`.`expiry` < '1331173687')
AS `conn`
LEFT OUTER JOIN `cas_not_connected`
ON `conn`.`id1` = `cas_not_connected`.`name`
UNION
SELECT * FROM (
SELECT CONCAT_WS(' ', `cas_users`.`first_name`, `cas_users`.`last_name`) AS `name`, `cas_users`.`email` AS `email1`, `cas_users`.`meta`, `cas_users`.`id` AS `id1`, `cas_connected`.`stage`
FROM `cas_users`
INNER JOIN `cas_connected`
ON `cas_connected`.`freelancer_hash` = `cas_users`.`hash`
WHERE `cas_connected`.`employer_hash` = 'd4735e3a265e16eee03f59718b9b5d03019c07d8b6c51f90da3a666eec13ab35'
AND `cas_connected`.`stage` = '0'
AND `cas_users`.`expiry` > '1331173687'
UNION
SELECT CONCAT_WS(' ', `cas_users`.`first_name`, `cas_users`.`last_name`) AS `name`, `cas_users`.`email` AS `email1`, `cas_users`.`meta`, `cas_users`.`id` AS `id1`, `cas_connected`.`stage` FROM `cas_users`
INNER JOIN `cas_connected`
ON `cas_connected`.`freelancer_hash` = `cas_users`.`hash`
WHERE `cas_connected`.`employer_hash` = 'd4735e3a265e16eee03f59718b9b5d03019c07d8b6c51f90da3a666eec13ab35'
AND `cas_connected`.`stage` = '1'
AND `cas_users`.`expiry` < '1331173687')
AS `conn`
RIGHT OUTER JOIN `cas_not_connected`
ON `conn`.`id1` = `cas_not_connected`.`name`
你也可以僞造那些空值的字段,但這很可能不會給你你想要的。解釋我的看法:如果你有一個兩列表,你想與三列表結合使用該列的常數值。像:SELECT id,name,'value'AS表的年齡 – Gimmy 2013-07-07 15:48:58