如何使用sql server中不存在的

如何使用sql server中不存在的,sql,sql-server,Sql,Sql Server,我试图找到一个列值存在于另一个表列值中 e、 g 我需要选择公共汽车和卡车 这是我的密码 SELECT Product_Name FROM tb_new_purchase WHERE NOT EXISTS (SELECT Product_Name FROM tb_new_product_Name_id ) 但它不返回任何值。我在哪里出错?谢谢……这是您需要的: 选择产品名称 从tb_new_购买 如果未插入产品名称,请从tb_new_Product_Name_id中选择产品名称使用NOT I

我试图找到一个列值存在于另一个表列值中

e、 g

我需要选择公共汽车和卡车

这是我的密码

SELECT Product_Name
FROM tb_new_purchase
WHERE  NOT EXISTS (SELECT Product_Name FROM tb_new_product_Name_id )
但它不返回任何值。我在哪里出错?谢谢……

这是您需要的:

选择产品名称 从tb_new_购买 如果未插入产品名称,请从tb_new_Product_Name_id中选择产品名称

使用NOT IN或将该字段传递到NOT EXISTS

您的查询正在检查tb\U new\U product\U Name\U id中的所有产品名称。如果表不为空,则传递where子句。我认为您需要一个相关子查询:

SELECT np.Product_Name
FROM tb_new_purchase np
WHERE  NOT EXISTS (SELECT 1
                   FROM tb_new_product_Name_id npni
                   WHERE np.Product_Name = npni.Product_Name
                  );

您需要添加一个条件来限制子查询。如果执行查询

SELECT Product_Name FROM tb_new_product_Name_id
它总是返回一些记录,因此notexists为false。试试像这样的东西

SELECT Product_Name
FROM tb_new_purchase
WHERE  NOT EXISTS (SELECT Product_Name 
                     FROM tb_new_product_Name_id 
                    WHERE tb_new_purchase.id = tb_new_product_Name_id.id)

我知道这里已经有5个答案了……但只要把它扔到这里,你可以把它作为一个连接而不是一个存在的地方。子查询确实会影响性能和运行时。在MSSQL中,运行时应该大致相同……在MySQL中,这种连接语法的效果要好得多

Select a.product_name
from tb_new_purchase a
left join tb_new_product_Name_id b on a.product_name = b.product_name
where b.product_name is null
当产品名称不在b表中时,在此处使用左联接将在b.product_名称列中生成null。当product_name为null时,此处“b”表中有条目的所有行都将作为过滤器运行。

您可以使用,除非您需要:

SELECT  Product_Name
FROM tb_new_purchase
EXCEPT
SELECT Product_Name 
FROM tb_new_product_Name_id 

你能告诉我如何使用insertedcan写触发器吗?你能告诉我如何使用insertedcan写触发器吗?当像子查询这样的语句真的会影响性能时,你应该自己运行测试,或者与有测试的人核实一下。否则,你就有传播错误信息的风险@AaronBertrand已经运行了这样的测试,他更喜欢不存在的形式。请在此处阅读:。
SELECT Product_Name
FROM tb_new_purchase
WHERE  NOT EXISTS (SELECT Product_Name 
                     FROM tb_new_product_Name_id 
                    WHERE tb_new_purchase.id = tb_new_product_Name_id.id)
Select a.product_name
from tb_new_purchase a
left join tb_new_product_Name_id b on a.product_name = b.product_name
where b.product_name is null
SELECT  Product_Name
FROM tb_new_purchase
EXCEPT
SELECT Product_Name 
FROM tb_new_product_Name_id