我想从两个表category
和sub_category
中选择数据。
但我只得到category
的列名。我想要category
和sub_category
。
结果如下:
{ category_id: 3, category: 'GARDEN' },
{ category_id: 6, category: 'ART' },
{ category_id: 4, category: 'CONSOLE' },
{ category_id: 2, category: 'ELECTRONICS' },
{ category_id: 4, category: 'ELECTRONICS' },
{ category_id: 2, category: 'CONSOLE' },
{ category_id: 5, category: 'CHAIR' },
{ category_id: 6, category: 'COLORS' },
{ category_id: 5, category: 'GARDEN' },
{ category_id: 1, category: 'CONSOLE' },
{ category_id: 3, category: 'CUT' },
{ category_id: 1, category: 'ELECTRONICS' }
下面是我的代码:
SELECT
c.id AS category_id,
c.category
FROM
category c
UNION
SELECT
sc.id AS sub_category_id,
sc.sub_category
FROM
sub_category sc
联系我们
以下是我预期结果:
{ category_id: 3, category: 'GARDEN' },
{ category_id: 6, category: 'ART' },
{ category_id: 4, category: 'CONSOLE' },
{ category_id: 2, category: 'ELECTRONICS' },
{ category_id: 4, category: 'ELECTRONICS' },
{ category_id: 2, category: 'CONSOLE' },
{ category_id: 5, category: 'CHAIR' },
{ category_id: 6, category: 'COLORS' },
{ sub_category_id: 5, category: 'GARDEN' },
{ sub_category_id: 1, category: 'CONSOLE' },
{ sub_category_id: 3, category: 'CUT' },
{ sub_category_id: 1, category: 'ELECTRONICS' }
3条答案
按热度按时间dzhpxtsq1#
推荐
join
的评论是正确的:FULL OUTER JOIN
返回所有连接的行,每个不匹配的左侧行加上一行(在右侧扩展为空),每个不匹配的右侧行加上一行(在左侧扩展为空)。您可以指示它 not match,只显示两个表中所有不匹配的行:demo
| 类别id|类别|子类别ID|子范畴|
| --|--|--|--|
| 2 |控制台| * 空 | 空 *|
| 2 |电子| * 空 | 空 *|
| 3 |花园| * 空 | 空 *|
| 4 |控制台| * 空 | 空 *|
| 4 |电子| * 空 | 空 *|
| 5 |椅子| * 空 | 空 *|
| 6 |艺术| * 空 | 空 *|
| 6 |颜色| * 空 | 空 *|
| * 空 | 空 *| 1 |控制台|
| * 空 | 空 *| 1 |电子|
| * 空 | 空 *| 3 |切割|
| * 空 | 空 *| 5 |花园|
wydwbb8l2#
问题在于您使用的是UNION操作,该操作垂直组合两个查询的结果,但它会丢弃第二个查询的列名,并根据第一个查询重命名列。
你应该使用JOIN操作!
7y4bm7vi3#
如果你想在
UNION
语句中区分行来自哪个表,你可以例如:添加一个单独的列到你的结果集,以指定-类似这样的东西:然后,您得到的结果将在新的
source_table
列中包含Category
或Subcategory
,以告诉您行来自何处。