gpt4 book ai didi

sql - 为每行选择除等于之外的两行值?

转载 作者:行者123 更新时间:2023-11-29 13:15:33 24 4
gpt4 key购买 nike

我是 sql 的 super 菜鸟,因此它可能无法清楚地解释我在标题上问的是什么。对于那个很抱歉。

我会尽可能多地用一个简单的例子来解释。

请先看我的 table

select * from table board;
-----------------------------
num | category1 | category2 |
-----------------------------
1 | c | tutorial
2 | c | note
3 | c++ | tutorial
4 | c++ | code
-----------------------------

我想像这样选择每个类别的值列表

select distinct category1 from board;
category1 
-----------
c
c++


select distinct category2 from board;
category2 
-------------
code
note
tutorial

我可以很容易地做到这一点,但我想这很蹩脚。此查询需要运行两次才能选择每个类别。

我期待这样的结果

category1 | category2 
---------------------
c | NULL
c++ | NULL
NULL | code
NULL | note
NULL | tutorial

下面是我试过的代码

Select category1 as cat1, category2 as cat2 
FROM board
LEFT JOIN (SELECT distinct category1 FROM blog)tb1
ON cat1 = tb1.category
LEFT JOIN (SELECT distinct category2 FROM blog)tb2
ON cat2 = tb2.category;

但它的返回

category1 | category2 
---------------------
c | tutorial
c | note
c++ | tutorial
c++ | code

我现在很困。

有没有办法只运行一次查询?比如使用 SubQuery?

最佳答案

你可以使用UNION:

select category1, NULL AS category2 from board
UNION
select NULL, category2 from board;

DBFiddle Demo

关于sql - 为每行选择除等于之外的两行值?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/49622972/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com