Mysql 在WHERE子句中查询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

我在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.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