gpt4 book ai didi

mysql - SQL从现有表创建新表

转载 作者:行者123 更新时间:2023-11-29 12:05:21 25 4
gpt4 key购买 nike

我有这个非常基本的问题,只是不知道该怎么做。我有两张 table 。

第一列,users,包含两列:id,它只是代表一个人的数字和性别。第二列现在不重要了。

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

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

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

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

知道我应该做什么吗?

最佳答案

您不需要新 table 。您想要的是 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

上述查询将列出所有用户以及已完成的订单数量。如果您只想列出至少有一个已完成订单用户,请使用INNER JOIN

<小时/>

要插入新表,请先创建表并使用 INSERT INTO:

CREATE TABLE FinishedOrderCountByUser(
UserId INT,
Sex CHAR(1),
CountOfFinished INT
)
INSERT INTO FinishedOrderCountByUser(UserId, Sex, CountOfFinished)
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

关于mysql - SQL从现有表创建新表,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31577522/

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