1.
创建视图(CREATE VIEW)时,通常不会输出任何结果集。它只是一种定义逻辑视图的方式,在数据库中保存一个查询定义。要查看视图中的内容,你需要使用 SELECT 语句查询该视图。例如,如果你创建了名为 new_user_payments
的视图:
CREATE VIEW new_user_payments AS
SELECT
dt,
SUM(pay_money)
FROM
user_pay
JOIN
new_user ON new_user.user_id = user_pay.user_id
WHERE
new_user.is_new = 1
GROUP BY
dt;
然后要查看这个视图的内容,你需要执行以下查询:
SELECT * FROM new_user_payments;
这才会输出视图的内容。视图只是一个预定义的查询,创建时不会有输出。
2.是的,你的语法有问题。在创建视图后,如果要立即查看视图的内容,应该在创建视图的语句之后使用分号 ;
,而不是再次单独执行一个 SELECT 语句。修正后的语法应该是这样的:
CREATE VIEW new_view AS
SELECT
dt,
SUM(pay_money)
FROM
user_pay
JOIN
new_user ON new_user.user_id = user_pay.user_id
WHERE
new_user.is_new = 1
GROUP BY
dt;
SELECT * FROM new_view;
3.你的语法基本正确,但 WITH
子句不需要分号结尾。修正后的语法如下:
WITH new AS (
SELECT
dt,
SUM(pay_money)
FROM
user_pay
JOIN
new_user ON new_user.user_id = user_pay.user_id
WHERE
new_user.is_new = 1
GROUP BY
dt
)
SELECT * FROM new;
在这个示例中,使用了 WITH
子句创建了一个名为 new
的临时表达式(CTE),然后通过 SELECT * FROM new;
查询了这个临时表达式的内容。
4.视图创建里面不能包含子查询