我有一个看起来与此相似的观点,
SELECT dbo.Staff.StaffId, dbo.Staff.StaffName, dbo.StaffPreferences.filter_type
FROM dbo.Staff LEFT OUTER JOIN
dbo.StaffPreferences ON dbo.Staff.StaffId = dbo.StaffPreferences.StaffId
Run Code Online (Sandbox Code Playgroud)
我正在尝试更新StaffPreferences.filter_type使用,
UPDATE vw_Staff SET filter_type=1 WHERE StaffId=25
Run Code Online (Sandbox Code Playgroud)
我在MSDN文章中读过这篇文章,
任何修改(包括UPDATE,INSERT和DELETE语句)都必须仅引用一个基表中的列.
这是否意味着我只能更新dbo.Staff中的字段(这是我当前可以实现的)在这个上下文中,'base table'的定义是否扩展到任何后续连接的表?
编辑:这是MS SQL
我有一个有点复杂的查询与多个(嵌套)子查询,我想让应用程序开发人员使用它.该查询是通用的,并且在数据集的集合上生成具有计算值的视图,并且开发者预期仅需要来自查询返回的一些记录(即,它们将限制某个实体的ID或日期范围的结果或某些这样).
我可以看到实现这个的3种方法:
WHERE根据需要添加自己的子句.WHERE让每个应用程序应用他们需要的过滤器.目前我正在寻找3个额外的子视图,主要是因为一些子查询被多次使用并且作为子视图执行它们可以防止重复 - 否则它可能会更糟;-).明智的表现会更好吗?(假设在所有情况下所有索引都是等效的)如果可能,请选择最坏的情况.
你认为什么在代码维护方面会更好?
mysql performance database-design stored-procedures sql-view
为什么我必须编写"刷新视图"脚本,并在每次向视图添加或编辑某些字段时执行它们?
SQL Server知道在Management Studio中的花哨的视图编辑窗口中编辑它时需要刷新视图,那么为什么在通过脚本编辑视图后它不能只是告诉它的视图进行刷新?
我在SQL Server 2008中有一个非常大的表.它有许多字段,这些字段仅对某些用户段有用,某些用户不应该看到这些字段.
这个表很大,所以我想为每个用户类创建一些简单的视图,我可以让他们访问视图,他们只能看到他们需要的列.
视图是占用数据库中的空间,还是将其保存为简单的select语句?
我在这里的问题是,是什么区别CTE和View在SQL.我的意思是在哪种情况下我应该使用CTE和哪种情况View.我知道两者都是某种虚拟表,但我不能区分它们的用途.
更新1:
例如:我有一个填充了trades(tbl_trade)的数据库.我需要从3.5百万条记录中选择当前时间到当前时间打开的交易然后操纵数据(在虚拟表上使用不同的查询 - 这看起来像View).这里的问题是我想要一个SUM3-4列,然后我需要SUM一些列并创建一个带有结果的虚拟列(看起来像CTE).
例如:tbl_trade有列:profit,bonus和expenses.我需要的SUM(profit),SUM(bonus),SUM(expenses)和新的一列total,这将是等于SUM(profit)+ SUM(bonus)+ SUM(expenses).
PS.重新运行查询SUM不是一个选项,因为我已经有了结果.
提前致谢!
我想创建一个视图,它将显示由不同类型字段连接的两个表的信息.一个字段是nvarchar,另一个是int.我知道我需要在另一种类型中转换一种类型,但不知道该怎么做.任何帮助将不胜感激.
SELECT dbo.co.co_num, dbo.pck_hdr.weight, dbo.STR_ShipTrack.TrackingNumber
FROM dbo.co
INNER JOIN dbo.pck_hdr ON dbo.co.co_num = dbo.pck_hdr.co_num INNER JOIN dbo.STR_ShipTrack ON dbo.pck_hdr.pack_num = dbo.STR_ShipTrack.Reference1
Run Code Online (Sandbox Code Playgroud) 嗨我有这样的表:
表格条目:
id | total_comments
_____________________
1 | 0
2 | 0
3 | 0
4 | 0
表评论:
id | 开斋节 评论
_____________________
1 | 1 | 评论sdfd
2 | 1 | 测试测试
3 | 1 | 评论文本
4 | 2 | 虚拟评论
5 | 2 | 样本评论
6 | 1 | fg fgh dfh
我写的查询:
UPDATE entry
SET total_comments = total_comments + 1
WHERE id IN ( SELECT eid
FROM comments
WHERE id IN (1,2,3,4,5,6))
Run Code Online (Sandbox Code Playgroud)
我得到的结果是:
表格条目:
id …
如何获取结果集中每列的标签,以便在其表中添加名称?
我希望在单个表和连接上进行查询时发生这种情况.
例:
SELECT first_name, last_name FROM person;
Run Code Online (Sandbox Code Playgroud)
我希望结果如下:
| person.first_name | person.last_name |
|-------------------|------------------|
| Wendy | Melvoin |
| Lisa | Coleman |
Run Code Online (Sandbox Code Playgroud)
我可以使用"AS"为每列定义别名,但这将是乏味的.我希望这会自动发生.
SELECT first_name AS person.first_name, last_name AS person.last_name FROM person;
Run Code Online (Sandbox Code Playgroud)
我的问题的原因是我使用的数据库驱动程序不提供元数据,通知我结果集获取其数据的数据库列.我正在尝试编写通用代码来处理结果集.
我想知道如何在SQL中执行此操作,或者至少在Postgres中.
SQLite有这样一个功能,虽然我看到它现在被莫名其妙地弃用了.SQLite有两个pragma设置:full_column_names和short_column_names.
我正在开发一个店面Web应用程序.当潜在客户在网站上查看产品时,我想自动从数据库中建议一组类似的产品(与要求人员明确输入产品相似性数据/映射相比).
实际上,当您考虑它时,大多数店面数据库已经有很多可用的相似性数据.在我的情况下Products可能是:
Manufacturer(又名Brand),Categories,和Tags(aka Keywords).
通过计算产品与所有其他产品之间共享属性的数量,您可以计算"SimilarityScore",以便将其他产品与客户正在查看的产品进行比较.这是我最初的原型实现:
;WITH ProductsRelatedByTags (ProductId, NumberOfRelations)
AS
(
SELECT t2.ProductId, COUNT(t2.TagId)
FROM ProductTagMappings AS t1 INNER JOIN
ProductTagMappings AS t2 ON t1.TagId = t2.TagId AND t2.ProductId != t1.ProductId
WHERE t1.ProductId = '22D6059C-D981-4A97-8F7B-A25A0138B3F4'
GROUP BY t2.ProductId
), ProductsRelatedByCategories (ProductId, NumberOfRelations)
AS
(
SELECT t2.ProductId, COUNT(t2.CategoryId)
FROM ProductCategoryMappings AS t1 INNER JOIN
ProductCategoryMappings AS t2 ON t1.CategoryId = t2.CategoryId AND t2.ProductId != t1.ProductId
WHERE t1.ProductId = …Run Code Online (Sandbox Code Playgroud) sql-view ×10
sql ×5
sql-server ×5
mysql ×2
sql-update ×2
dynamic-sql ×1
identifier ×1
indexing ×1
inner-join ×1
int ×1
nvarchar ×1
oracle ×1
performance ×1
postgresql ×1
refresh ×1
subquery ×1
view ×1