SQL从现有表中创建新表

时间:2015-07-23 03:07:53

标签: mysql sql sql-server

我有这个非常基本的问题而且无法弄清楚如何去做。我有两张桌子。

第一个users包含两列:id,它只是代表一个人的数字和sex。第二栏现在没关系。

另一个表格orders包含以下列:id_usertimestateid_user在第一个表中引用idstate有三个不同的值(已完成,已取消,已取消)。我需要制作一个表格,显示该人的id旁边的完成状态计数(一个人有多少完成状态)。我可以运行这件事:

select * , count(state) as CountOfFinished from orders
where state = 'finished' 
group by id_user;

向我显示该信息,但我需要有一个显示idsexCountOfFinished的表格。

我将第一个表格复制到新表格,但不知道如何在这两个表格旁边添加CountOfFinished列。我甚至不知道如何制作一个列,所以我可以加入它或其他东西。

知道我该怎么办?

1 个答案:

答案 0 :(得分:1)

您不需要新表。你想要的是JOIN,或者在这种情况下是LEFT JOIN

SELECT
    u.id,
    u.sex,
    ISNULL(COUNT(o.state), 0) as CountOfFinished
FROM users u
LEFT JOIN orders o
    ON o.id_user = u.id
    AND o.state = 'finished'
GROUP BY
    u.id, u.sex

上述查询将列出所有users和已完成orders的数量。如果您只想列出至少有一个已完成users的{​​{1}},请使用order

要插入新表格,请先创建表格并使用INNER JOIN

INSERT INTO