我需要做的是:
我的数据库中有一个这样的表:
idx | name | age
------ ---------- -------
1 | John | 18
2 | Marry | 19
3 | Eric | 17
然后我得到第二个表:
name | age
------ -----
Moses | 29
John | 18
Eric | 20
我想运行如下的查询:
select *
from firstTable
where (name, age) not in (select * from secondTable)
和这样的交叉查询:
select *
from firstTable
where (name, age) in (select * from secondTable)
所以第一个查询的结果将是:
2 | Marry | 19
---- -------- ----
3 | Eric | 17
,第二个查询的结果将是:
1 | John | 18
我还找到了一个建议如下的解决方案:
select *
from firstTable
where EXISTS (select 1
from secondTable
where firstTable.name = secondTable.name
and firstTable.age = secondTable.age))
但是如果我在两个表上都有“john - null”,它会将它们视为未知(既不相等也不相等)。我知道原因,但我确实需要它们是平等的。
我需要这样做的原因是为了将当前索引值保存到查询的结果中。
答案 0 :(得分:0)
试试这个:
select distinct a.idx,a.name,a.age,b.name,b.age from first_table as a
inner join
second_table as b
on a.name = b.name and a.age = b.age
这个只显示具有相同值的记录first_table和second_table
此查询显示不在second_table和union两个表中,如果有:
select distinct a.idx,b.name,b.age from first_table as a
inner join
second_table as b
on a.name = b.name and a.age = b.age
union all
select a.idx,a.name,a.age
from first_table as a where a.name not in(select name from second_table)
答案 1 :(得分:0)
您只需要在查询逻辑中包含处理<?xml version="1.0"?>
-<OTA_HotelResRQ Version="2.2.0" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">
-<Hotel xmlns="http://webservices.sabre.com/sabreXML/2011/10">
<BasicPropertyInfo RPH="001"/>
<Customer NameNumber="01.01"/>
-<Guarantee Type="G">
-<CC_Info>
<PaymentCard Number="3782 8224 6310 005" ExpireDate="2021-09" Code="AX"/>
-<PersonName>
<Surname>tailor</Surname>
</PersonName>
</CC_Info>
</Guarantee>
<RoomType NumberOfUnits="1"/>
</Hotel>
</OTA_HotelResRQ>
值。它会是这样的:
NULL
应该像魅力一样工作。 =)