找出两个表是否出现了对应的值,
打算使用exists关键字:
两个表:
第一张主表:
select pn_Code,serialNumber from pnassertbasic_ruku pr left join pnassertruku pu on pr.parent_pnAssertRuku_id = pu.child_pnAssertRukuDetails_id
where pn_Code is not null and serialNumber is not null and DATE(pr.create_time) = CURDATE() and pr.warehouseEntryNumber <> 'WEd3791f0b'
第二张子表:
select pn_Code,serialNumber from pnassertbasic_ruku pr left join pnassertruku pu on pr.parent_pnAssertRuku_id = pu.child_pnAssertRukuDetails_id
where pu.child_pnAssertRukuDetails_id is null and pr.warehouseEntryNumber = 'WEd3791f0b'
想查看子表中中的内容是否出现在主表中???
写完后就报错了,咨询下大佬们如何用查询主表中是否出现了子表的内容????
我是这么写的:写完后运行报错(报错日志在最下边)
select * from (
select pn_Code,serialNumber from pnassertbasic_ruku pr left join pnassertruku pu on pr.parent_pnAssertRuku_id = pu.child_pnAssertRukuDetails_id
where pn_Code is not null and serialNumber is not null and DATE(pr.create_time) = CURDATE() and pr.warehouseEntryNumber <> 'WEd3791f0b'
) as temp1
where EXISTS (
selet * from (
select pn_Code,serialNumber from pnassertbasic_ruku pr left join pnassertruku pu on pr.parent_pnAssertRuku_id = pu.child_pnAssertRukuDetails_id
where pu.child_pnAssertRukuDetails_id is null and pr.warehouseEntryNumber = 'WEd3791f0b'
) as temp2
where temp1.pn_Code <> temp2.pn_Code and temp1.serialNumber <> temp2.serialNumber
)
报错日志:
SQL 错误 [1064] [42000]: You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near 'selet * from (
select pn_Code,serialNumber from pnassertbasic_ruku pr left ' at line 6
错误位置: line: 5
你的 select
单词拼写错误了
在您的SQL查询中,存在几个问题需要解决。首先,您的EXISTS
子查询中的SELECT
语句拼写错误(selet
应该是 SELECT
)。其次,您的EXISTS
子查询的逻辑可能并不符合您的需求,因为您正在检查temp1
和temp2
中的pn_Code
和serialNumber
是否不相等,这通常不是检查一个表中的数据是否存在于另一个表中的方法。
您的目标是检查子表(即pu.child_pnAssertRukuDetails_id is null
且pr.warehouseEntryNumber = 'WEd3791f0b'
的记录)中的pn_Code
和serialNumber
是否也存在于主表(即您的第一个查询结果)中。以下是一个修正后的查询示例:
SELECT *
FROM (
SELECT pn_Code, serialNumber
FROM pnassertbasic_ruku pr
LEFT JOIN pnassertruku pu ON pr.parent_pnAssertRuku_id = pu.child_pnAssertRukuDetails_id
WHERE pn_Code IS NOT NULL
AND serialNumber IS NOT NULL
AND DATE(pr.create_time) = CURDATE()
AND pr.warehouseEntryNumber <> 'WEd3791f0b'
) AS temp1
WHERE EXISTS (
SELECT 1
FROM pnassertbasic_ruku pr2
LEFT JOIN pnassertruku pu2 ON pr2.parent_pnAssertRuku_id = pu2.child_pnAssertRukuDetails_id
WHERE pu2.child_pnAssertRukuDetails_id IS NULL
AND pr2.warehouseEntryNumber = 'WEd3791f0b'
AND pr2.pn_Code = temp1.pn_Code
AND pr2.serialNumber = temp1.serialNumber
);
SELECT 1
:在EXISTS
子查询中,通常使用SELECT 1
(或任何其他常量),因为EXISTS
只关心子查询是否返回任何行,而不关心返回哪些列或多少行。EXISTS
子查询中,我添加了条件来确保pr2.pn_Code
和pr2.serialNumber
与temp1
中的对应列相匹配。这样,只有当子表(pu2.child_pnAssertRukuDetails_id IS NULL
)中存在与主表相同的pn_Code
和serialNumber
时,EXISTS
才会为真。EXISTS
子查询中重复相同的连接和过滤逻辑。但在这个特定例子中,由于EXISTS
子查询的过滤条件与主查询不同,因此可能无法完全避免。这个修正后的查询应该能够解决您的问题,同时避免语法错误,并正确反映您的查询需求。
问题内容: 比方说,我有一个关联数组,像这样:。 如何检查字典中是否存在? 问题答案: if key in array: # do something 关联数组在Python中称为字典,您可以在stdtypes文档中了解有关它们的更多信息。
问题内容: 理论上听起来很简单,但是我已经做了很多研究,但很难弄清楚。 我如何检查MySQL表是否存在以及它是否在执行某些操作。(我猜一个简单的php if / else语句可以解决这个问题) 有没有办法做到这一点? 这是我对cwallenpoole的响应所做的: 问题答案: 诚然,它比Python惯用语言更具有Python风格,但另一方面,您不必担心要处理大量额外数据。 编辑 因此,截至我撰写此
rank ▲ ✰ vote url 47 435 86 477 url 检查一个键在字典中是否存在 在更新字典之前想检查键是否存在.我写了如下代码: if 'key1' in dict.keys(): print "blah" else: print "boo" 我想这不是最好的方法,还有什么更好的方法? 用in. d = dict() for i in xrange(100):
问题内容: 我正在尝试编写一个查询,该查询将检查MySQL中的特定表是否具有特定列,如果没有,则创建它。否则什么都不做。在任何企业级数据库中,这实际上都是一个简单的过程,但是MySQL似乎是一个例外。 我以为 可以工作,但是失败很严重。有办法吗? 问题答案: 这对我来说很好。 使用PHP就像…
问题内容: 因此,我从服务器获取了一些JSON值,但我不知道是否会有特定的字段。 像这样: 有时,还会有一个额外的字段,例如: 我想检查名为“ club”的字段是否存在,以便在解析时不会得到 org.json.JSONException:club的值 问题答案: JSONObject类具有一个名为“ has”的方法: http://developer.android.com/reference/o
本文向大家介绍如何检测MySQL中是否存在表?,包括了如何检测MySQL中是否存在表?的使用技巧和注意事项,需要的朋友参考一下 要检测表的存在,请使用INFORMATION_SCHEMA.TABLES的概念。以下是语法- 要了解上述语法,让我们创建一个表- 这是检测数据库中是否存在表的查询- 这将产生以下输出-