合并 SQL 中同一列的行
Merging rows from the same column in SQL
我知道有很多关于此的帖子,但我就是不明白该怎么做?
这是我正在使用的代码(这里没有合并):
SELECT coupon_code, order_id, youwp_woocommerce_order_itemmeta.meta_value, youwp_postmeta.meta_value
FROM `youwp_woocommerce_order_items`, `youwp_woocommerce_order_itemmeta`, `youwp_postmeta`, `you_ambassador`
WHERE you_ambassador.user_id = 1
AND youwp_woocommerce_order_items.order_item_name = you_ambassador.coupon_code
AND order_id = youwp_postmeta.post_id
AND youwp_woocommerce_order_items.order_item_id = youwp_woocommerce_order_itemmeta.order_item_id
AND youwp_woocommerce_order_itemmeta.meta_key = 'discount_amount'
AND (youwp_postmeta.meta_key = '_billing_first_name' OR youwp_postmeta.meta_key = '_billing_last_name')
这给了我:
我想 merge/combine meta_value 数据 "Kennet Leth" 和 "Sørensen" 即:
youwp_postmeta.meta_key = '_billing_first_name'
youwp_postmeta.meta_key = '_billing_last_name'
我使用 STUFF 或 MAX 和 GROUP BY 找到了一些类似问题的答案,但我就是不明白语法?
当答案使用诸如 t1 和 t2 或 A 和 B (t1.value - t2.value 或 A.value = B.value) 之类的选项时,我就是不这样做得到?
我已尝试更改这些解决方案,以便它们适合我的代码,但就是无法正常工作:
SELECT STUFF((SELECT ', ' + A.[Bank Account No] FROM tbl_Customer_Bank_Details A
Where A.[Customer ID]=B.[Customer ID] FOR XML PATH('')),1,1,'') As [Bank Accounts]
From tbl_Customer_Bank_Details B
Group By [Customer ID], [Customer Name]
或
SELECT Code,
( SELECT Name + ' '
FROM Table1 t2
WHERE t2.Code = t1.Code
ORDER BY Name
FOR XML PATH('') ) AS Name
FROM Table1 t1
GROUP BY Code ;
如何输入我的 table 和列值?
编辑:
为澄清起见,我正在尝试从“youwp_postmeta.meta_value”列中合并 2 rows/results。
我通过指定得到结果:
WHERE (youwp_postmeta.meta_key = '_billing_first_name'
OR youwp_postmeta.meta_key = '_billing_last_name')
AND order_id = youwp_postmeta.post_id
所以每个 order_id 我得到 2 行,_billing_first_name 一行,_billing_first_name 一行,这些是我想要的行 merge/join.
找到了方法 ;)
刚刚更改了我的 SELECT 字符串以包含欠查询和 CONCAT():
SELECT coupon_code, order_id, im.meta_value,
CONCAT((SELECT pm.meta_value FROM `youwp_postmeta` AS pm WHERE pm.meta_key =
'_billing_first_name' AND order_id = pm.post_id), ' ',
(SELECT pm.meta_value FROM `youwp_postmeta` AS pm WHERE pm.meta_key =
'_billing_last_name' AND order_id = pm.post_id)) AS name
FROM
`youwp_woocommerce_order_items` AS i,
`youwp_woocommerce_order_itemmeta` AS im,
`youwp_postmeta` AS pm,
`you_ambassador` AS a
我知道有很多关于此的帖子,但我就是不明白该怎么做?
这是我正在使用的代码(这里没有合并):
SELECT coupon_code, order_id, youwp_woocommerce_order_itemmeta.meta_value, youwp_postmeta.meta_value
FROM `youwp_woocommerce_order_items`, `youwp_woocommerce_order_itemmeta`, `youwp_postmeta`, `you_ambassador`
WHERE you_ambassador.user_id = 1
AND youwp_woocommerce_order_items.order_item_name = you_ambassador.coupon_code
AND order_id = youwp_postmeta.post_id
AND youwp_woocommerce_order_items.order_item_id = youwp_woocommerce_order_itemmeta.order_item_id
AND youwp_woocommerce_order_itemmeta.meta_key = 'discount_amount'
AND (youwp_postmeta.meta_key = '_billing_first_name' OR youwp_postmeta.meta_key = '_billing_last_name')
这给了我:
我想 merge/combine meta_value 数据 "Kennet Leth" 和 "Sørensen" 即:
youwp_postmeta.meta_key = '_billing_first_name'
youwp_postmeta.meta_key = '_billing_last_name'
我使用 STUFF 或 MAX 和 GROUP BY 找到了一些类似问题的答案,但我就是不明白语法?
当答案使用诸如 t1 和 t2 或 A 和 B (t1.value - t2.value 或 A.value = B.value) 之类的选项时,我就是不这样做得到?
我已尝试更改这些解决方案,以便它们适合我的代码,但就是无法正常工作:
SELECT STUFF((SELECT ', ' + A.[Bank Account No] FROM tbl_Customer_Bank_Details A
Where A.[Customer ID]=B.[Customer ID] FOR XML PATH('')),1,1,'') As [Bank Accounts]
From tbl_Customer_Bank_Details B
Group By [Customer ID], [Customer Name]
或
SELECT Code,
( SELECT Name + ' '
FROM Table1 t2
WHERE t2.Code = t1.Code
ORDER BY Name
FOR XML PATH('') ) AS Name
FROM Table1 t1
GROUP BY Code ;
如何输入我的 table 和列值?
编辑:
为澄清起见,我正在尝试从“youwp_postmeta.meta_value”列中合并 2 rows/results。
我通过指定得到结果:
WHERE (youwp_postmeta.meta_key = '_billing_first_name'
OR youwp_postmeta.meta_key = '_billing_last_name')
AND order_id = youwp_postmeta.post_id
所以每个 order_id 我得到 2 行,_billing_first_name 一行,_billing_first_name 一行,这些是我想要的行 merge/join.
找到了方法 ;)
刚刚更改了我的 SELECT 字符串以包含欠查询和 CONCAT():
SELECT coupon_code, order_id, im.meta_value,
CONCAT((SELECT pm.meta_value FROM `youwp_postmeta` AS pm WHERE pm.meta_key =
'_billing_first_name' AND order_id = pm.post_id), ' ',
(SELECT pm.meta_value FROM `youwp_postmeta` AS pm WHERE pm.meta_key =
'_billing_last_name' AND order_id = pm.post_id)) AS name
FROM
`youwp_woocommerce_order_items` AS i,
`youwp_woocommerce_order_itemmeta` AS im,
`youwp_postmeta` AS pm,
`you_ambassador` AS a