Mysql 在WHERE子句中查询XML属性值
我在xml列中有以下xml数据Mysql 在WHERE子句中查询XML属性值,mysql,sql,xml,where,Mysql,Sql,Xml,Where,我在xml列中有以下xml数据 <LoyaltyInfo ServerDate="2056-12-12"> <Accounts> <Acc ID="1" Value="2.750" UpToDate="2014-05-13 18:38:00" /> <Acc ID="2" Value="2.750" UpToDate="2014-05-13 18:38:00" /> <Acc ID="3" Value="141.0
<LoyaltyInfo ServerDate="2056-12-12">
<Accounts>
<Acc ID="1" Value="2.750" UpToDate="2014-05-13 18:38:00" />
<Acc ID="2" Value="2.750" UpToDate="2014-05-13 18:38:00" />
<Acc ID="3" Value="141.06" UpToDate="2014-05-22 12:53:00" />
<Acc ID="6" Value="924.42" UpToDate="2014-06-01 16:53:00" />
<Acc ID="7" Value="2895" UpToDate="2014-05-13 18:38:00" />
</Accounts>
</LoyaltyInfo>
使用
fn.min()
函数模拟和
运算符尝试此查询:
select *
FROM T
WHERE xmldata.value('fn:min((LoyaltyInfo/Accounts/Acc/@ID="3",
LoyaltyInfo/Accounts/Acc/@Value="141.06"))','bit')=CAST(1 as bit)
供未来任何人参考 对于1个条件
select xmldata.query('for $loyaltyinfo in /LoyaltyInfo/Accounts
let $id :=$loyaltyinfo/Acc/@ID
let $value := $loyaltyinfo/Acc/@Value
where $id = "19" and $value = "141.06"
return $loyaltyinfo
') as [Valid Data]
FROM T
对于2个条件
select xmldata.query('for $loyaltyinfo in /LoyaltyInfo/Accounts
let $id :=$loyaltyinfo/Acc/@ID
let $value := $loyaltyinfo/Acc/@Value
where ($id = "19" and $value = "141.06") and ($id = "20" and $value = "0.00")
return $loyaltyinfo
') as [Valid Data]
FROM T
select xmldata.query('for $loyaltyinfo in /LoyaltyInfo/Accounts
let $id :=$loyaltyinfo/Acc/@ID
let $value := $loyaltyinfo/Acc/@Value
where ($id = "19" and $value = "141.06") and ($id = "20" and $value = "0.00")
return $loyaltyinfo
') as [Valid Data]
FROM T