I have XML coming in as the input, but I'm unclear on how I need to setup the data and statement to get the values from it. My XML is as follows:
<Keys>
<key>246</key>
<key>247</key>
<key>248</key>
</Keys>
And I want to do the following (is simplified to get my point across)
Select *
From Transaction as t
Inner Join @InputXml.nodes('Keys') as K(X)
on K.X.value('@Key', 'INT') = t.financial_transaction_grp_key
Can anyone provide how I would do that? What would my 3rd/4th line in the SQL look like? Thanks!
From your code I assume this is SQL-Server but you added the tag
[mysql]...For your next question please keep in mind, that it is very important to know your tools (vendor and version).
Assuming
T-SQLand[sql-server](according to the provided sample code) you were close:What was wrong:
.nodes()must go down to the repeating element, which is<key>.value()you are using the path@Key, which is wrong on two sides: 1)<key>is an element and not an attribute and 2) XML is strictly case-sensitive, soKey!=key.An alternative might be this:
Which one is faster depends on the count of rows in your source table as well as the count of keys in your XML. Just try it out.