我是sql的超级菜鸟,因此它可能无法清楚地解释我对标题的要求。对于那个很抱歉。
我将用一个简单的例子解释尽可能多的事情。
请先看看我的桌子
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?
答案 0 :(得分:1)
您可以使用UNION
:
select category1, NULL AS category2 from board
UNION
select NULL, category2 from board;
<强> https://httpd.apache.org/docs/current/misc/security_tips.html 强>