SQL的 “类别” 和 “项目” 表

问题描述:

我有2个表,1)范畴表& 2)项目表SQL的 “类别” 和 “项目” 表

分类表中的字段有:1)CAT_ID 2)cat_name 项目表中的字段有:1) CAT_ID 2)ITEM_ID 3)ITEM_NAME

类别表数据:

|1|Cat A| 
|2|Cat B| 
|3|Cat C| 

项目表数据:

|NULL|1|Item 1| 
|1|2|Item 2| 
|NULL|3|Item 3| 
|2|4|Item 4| 
|2|5|Item 5| 

我期望的SQL出认沽必须是这样的:(显示所有空类项目,但对于多类别“不同的”项目”

|NULL|1|Item 1| 
|1|2|Item 2| 
|NULL|3|Item 3| 
|2|4|Item 4| 

而且也希望像:(随机如果多个‘在同一类别项目’ )

|NULL|1|Item 1| 
|1|2|Item 2| 
|NULL|3|Item 3| 
|2|4|Item 4| 

&

|NULL|1|Item 1| 
|1|2|Item 2| 
|NULL|3|Item 3| 
|2|5|Item 5| 

我该如何解决呢?数据库可能是“MySQL”和“SQLite”两者的移动端。

+1

请参阅https://meta.*.com/questions/333952/why-should-i-provide-an-mcve-for-what-seems-to-me-to-be-a-very - 简单-SQL查询 – Strawberry

SELECT cat_id, 
     item_id, 
     item_name, 
     MIN(random()) -- selects a random item from the group 
FROM Item 
WHERE cat_id IS NOT NULL 
GROUP BY cat_id 

UNION ALL 

SELECT NULL, 
     item_id, 
     item_name, 
     NULL 
FROM Item 
WHERE cat_id IS NULL 

ORDER BY item_id;