场景:
假设我有两个表,TableA和TableB.TableB的主键是单列(BId),是TableA中的外键列.
在我的情况下,我想删除TableA中与TableB中的特定行链接的所有行:我可以通过连接执行此操作吗?删除从连接中提取的所有行?
DELETE FROM TableA
FROM
TableA a
INNER JOIN TableB b
ON b.BId = a.BId
AND [my filter condition]
Run Code Online (Sandbox Code Playgroud)
或者我被迫这样做:
DELETE FROM TableA
WHERE
BId IN (SELECT BId FROM TableB WHERE [my filter condition])
Run Code Online (Sandbox Code Playgroud)
我问的原因是在我看来,在处理较大的表时,第一个选项会更有效.
谢谢!
有没有办法写一个T-SQL命令让它睡一段时间?我正在异步编写Web服务,我希望能够运行一些测试,看看异步模式是否真的会使它更具可伸缩性.为了"模拟"一个缓慢的外部服务,我希望能够使用运行缓慢的脚本调用SQL服务器,但实际上并没有处理大量的东西.
我想知道这在SQL中是否可行.假设您有两个表A和B,并在表A上执行选择并在表B上进行连接:
SELECT a.*, b.* FROM TABLE_A a JOIN TABLE_B b USING (some_id);
Run Code Online (Sandbox Code Playgroud)
如果表A包含列'a_id','name'和'some_id',而表B包含'b_id','name'和'some_id',则查询将返回列'a_id','name','some_id ','b_id','name','some_id'.有没有办法为表B的列名添加前缀而不单独列出每一列?相当于:
SELECT a.*, b.b_id as 'b.b_id', b.name as 'b.name', b.some_id as 'b.some_id'
FROM TABLE_A a JOIN TABLE_B b USING (some_id);
Run Code Online (Sandbox Code Playgroud)
但是,如上所述,没有列出每一列,所以类似于:
SELECT a.*, b.* as 'b.*'
FROM TABLE_A a JOIN TABLE_B b USING (some_id);
Run Code Online (Sandbox Code Playgroud)
基本上可以说,"b.*返回的每一列都带有'某事'".这可能还是我运气不好?
在此先感谢您的帮助!
编辑:不使用SELECT*等建议是有效的建议,但在我的上下文中不相关,所以请坚持手头的问题 - 是否可以添加前缀(SQL查询中指定的常量)给所有连接中表的列名?
编辑:我的最终目标是能够在两个带连接的表上执行SELECT*,并且能够从我在结果集中获得的列的名称中说明哪些列来自表A以及哪些列来自哪些列从表B.再次,我不想单独列出列,我需要能够做一个SELECT*.
我在使用LINQ to SQL找出如何使用多个左外连接时遇到了一些麻烦.我理解如何使用一个左外连接.我正在使用VB.NET.下面是我的SQL语法.
T-SQL
SELECT
o.OrderNumber,
v.VendorName,
s.StatusName
FROM
Orders o
LEFT OUTER JOIN Vendors v ON
v.Id = o.VendorId
LEFT OUTER JOIN Status s ON
s.Id = o.StatusId
WHERE
o.OrderNumber >= 100000 AND
o.OrderNumber <= 200000
Run Code Online (Sandbox Code Playgroud) 如何使用LINQ to SQL执行CROSS JOIN?
我刚刚处理了一个相当复杂的查询,并且需要8秒才能运行.EXPLAIN显示了一个奇怪的表顺序,即使使用FORCE INDEX提示我的索引也没有被使用.我遇到了STRAIGHT_JOIN join关键字并开始用它替换我的一些INNER JOIN关键字.我注意到速度提升了很多.最后我用STRAIGHT_JOIN替换了所有我的INNER JOIN关键字用于此查询,它现在在.01秒内运行.
我的问题是你什么时候使用STRAIGHT_JOIN,什么时候使用INNER JOIN?如果您正在撰写好的查询,是否有任何理由不使用STRAIGHT_JOIN?
我需要替换所有iframe标记,在我的数据库中存储为nvarchar.我可以使用以下sql-question找到条目:
SELECT * FROM databasename..VersionedFields WHERE Value LIKE '%<iframe%'
Run Code Online (Sandbox Code Playgroud)
假设我想替换以下代码段:
code before iframe <iframe src="yadayada"> </iframe> code after iframe
Run Code Online (Sandbox Code Playgroud)
有了这个:
code before iframe <a>iframe src="yadayada"</a> code after iframe
Run Code Online (Sandbox Code Playgroud) 有没有办法定义临时表而不预先定义它的架构?
我试图坚持保持数据库规范化的做法,但这导致需要运行多个连接查询.如果许多查询使用连接而不是调用可能包含冗余数据的单个表,是否会降低性能?
join ×5
t-sql ×5
sql ×4
sql-server ×3
linq ×2
linq-to-sql ×2
asynchronous ×1
c# ×1
cross-join ×1
database ×1
left-join ×1
mysql ×1
schema ×1
sleep ×1
temp-tables ×1
vb.net ×1