SQL Compact 中的 SQL 减号适用于大型数据集
本文关键字:SQL 大型 数据集 适用于 Compact 中的 | 更新日期: 2023-09-27 18:18:24
>我有两个大表:
products
--------
id (char) (primary key)
somefield1 (char)
somefield2 (char)
和
expired_products
------
id (char) (primary key)
我只想拥有那些在产品中但未过期的 ID(ID 不在 expired_products 中(。在MS Access中,我会做这样的事情
SELECT products.*
FROM products LEFT JOIN expired_products ON products.id = expired_products.id
WHERE expired_products.id Is Null;
最终,我想将查询结果写入新表中。
SQL Server Compact(sdf 文件(中是否有更好(更快的查询(解决方案?
顺便说一句。我正在使用C#并使用SqlCeConnection来访问数据库。
标准 SQL
和 SQL Server 中的减号运算符为 EXCEPT
:
SELECT id
FROM products
EXCEPT
SELECT id
FROM expired_products;
。但似乎EXCEPT
在紧凑型 4.0 中不受支持:(
与SQL一样,这是执行半差分的替代方法:
例如 NOT EXISTS
SELECT *
FROM products AS p
WHERE NOT EXISTS (
SELECT *
FROM expired_products AS e
WHERE p.id = e.id
);
例如 NOT IN
SELECT *
FROM products
WHERE id NOT IN (SELECT id FROM expired_products);
create table new_table (
id char(7) -- same as primary key in products
)
这是在 C# 中执行的命令,它是"插入到...选择..."陈述:
insert into new_table (id)
select p.id
from products p
where not exists (select 1 from expired_products e.id = p.id)
在评论后添加:
插入 (SQL Server Compact( on MSDN
INSERT [INTO]
table_name [ ( column_list ) ]
{ VALUES
( { DEFAULT | NULL | expression } [ ,...n] )
| derived_table
}
从 MSDN:
derived_table返回要插入到表中的数据行的任何有效 SELECT 语句。