从表中选择字段,其中 id 不在 mysql 的另一个表中 [不工作]

Posted

技术标签:

【中文标题】从表中选择字段,其中 id 不在 mysql 的另一个表中 [不工作]【英文标题】:select fields from table where id not in another table in mysql [not working] 【发布时间】:2016-01-27 18:07:04 【问题描述】:

我正在尝试从一个表中获取数据,但该 id 不在另一个表中。我引用了一些代码示例来解决这个问题,但它仍然不起作用。我为此尝试了两种风格。我尝试过的sql代码如下,请帮助我。谢谢。

样式 1

SELECT *
FROM quotation q
WHERE q.quotationId NOT IN (SELECT ip.quotation_id FROM invest_project ip)

样式 2

SELECT *
FROM quotation q
LEFT JOIN invest_project ip
ON q.quotationId = ip.quotation_id
WHERE q.quotationId IS NULL

【问题讨论】:

你遇到了什么错误.. 没有找到记录老兄:SELECT * FROM quote q LEFT JOINinvest_project ip ON q.quotationId = ip.quotation_id WHERE q.quotationId IS NULL; /* 受影响的行:0 找到的行:0 警告:0 1 次查询的持续时间:0.032 秒。 */ 在某些记录中 q.quotationId 是否为空...?? 老兄,我只想要左排除 JOIN 等等.....左表 id 不应该为空,但右表应该为空。是的,明白了。感谢您的建议。 它适用于以下代码:SELECT * FROM quote q LEFT JOINinvest_project ip ON q.quotationId = ip.quotation_id WHERE ip.quotation_id IS NULL 【参考方案1】:
Select *  
from [Table1] AS T1  
where not exists( select * from [Table2] AS T2 where T1.ID = T2.ID)  

为我工作

【讨论】:

【参考方案2】:

当您指定不显示空值数据的条件时, 试试这个

SELECT *
FROM quotation q
WHERE q.quotationId NOT IN (SELECT ip.quotation_id FROM invest_project ip) or q.quotationId is null

【讨论】:

【参考方案3】:

尝试不使用别名...

SELECT * FROM quotation WHERE quotation.quotationId NOT IN (SELECT quotation_id FROM invest_project)

【讨论】:

其实我很感谢你的建议。根据您的建议,我可以用另一种方法解决它。您的代码在 sql fiddle 工作。这是我还创建了类似于我的表的模式和 dml。 link。但它不适用于我的数据库。但是,我非常感谢您的建议和回答老兄。

以上是关于从表中选择字段,其中 id 不在 mysql 的另一个表中 [不工作]的主要内容,如果未能解决你的问题,请参考以下文章

mysql 根据数据所在的表从表中选择

如果存在则从表中选择,否则从oracle中的另一个表中选择

MYSQL 根据多行从表中选择

jquery根据选择值从表中填充文本输入

MySQL - 如何选择表中的行,其中 id 值位于另一个表中的逗号分隔字段中?

MySQL LEFT JOIN json 字段与表中的另一个 id