在mysql中,从表中选择字段,但id不在另一个表中[无效]。

4
我将为您翻译以下关于IT技术的内容,该内容涉及数据表中的数据获取以及如何在另一个表中查找特定ID。我参考了一些代码示例进行解决,但仍未成功。我尝试了两种不同的方法,下面是我尝试的SQL代码,请帮忙检测。谢谢。

方法1

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

Style 2

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

你遇到了什么错误? - anwaar_hell
没有找到记录哥们儿:SELECT * FROM quotation q LEFT JOIN invest_project ip ON q.quotationId = ip.quotation_id WHERE q.quotationId IS NULL; /* 受影响的行数:0 找到的行数:0 警告:0 查询持续时间:0.032 秒。 */ - Htoo Maung Thait
在一些记录中,q.quotationId是否为空? - anwaar_hell
兄弟,我只需要左排除连接,所以......左表ID不应为空,但右表应为空。是的,明白了。谢谢你的建议。 - Htoo Maung Thait
它与以下代码配合使用: SELECT * FROM quotation q LEFT JOIN invest_project ip ON q.quotationId = ip.quotation_id WHERE ip.quotation_id IS NULL - Htoo Maung Thait
这是你的Style2,没有进行任何更改。顺便说一下,第一个从记录中获取了quotationId不为空且不在第二个表中的数据...http://sqlfiddle.com/#!2/dc51fb/1 - anwaar_hell
3个回答

4
Select *  
from [Table1] AS T1  
where not exists( select * from [Table2] AS T2 where T1.ID = T2.ID)  

这对我有用


也适用于我。 - sunil

2

尝试不使用别名...

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

实际上,我很感谢您的建议。有了您的建议,我可以用另一种方法解决它。您的代码在 SQL Fiddle 上运行良好。这里我也创建了一个与我的表类似的模式和 DML。链接。但是它在我的数据库中不起作用。无论如何,我真的很感激您的建议和答案,伙计。 - Htoo Maung Thait

1
当您指定条件不显示空值数据时,请尝试以下操作。
SELECT *
FROM quotation q
WHERE q.quotationId NOT IN (SELECT ip.quotation_id FROM invest_project ip) or q.quotationId is null

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接