How to query KDB table where one column is a list?

kdb

Solution

select from table where `book2 in'books

This utilises the adverb each-both, read more about it here: http://code.kx.com/q4m3/6_Functions/#672-each-both

Problem

I have a table in KDB where one of the columns is a list of symbols, for example:- ``` q)table:([id:1 2 3 4 5] books:((`book1`book2);(enlist `book6);(enlist`book3);(enlist`book4);(`book2;`book5))) q)table id| books --| ------------ 1 | `book1`book2 2 | ,`book6 3 | ,`book3 4 | ,`book4 5 | `book2`book5 q) ``` I want to find all the rows where `book2 is one of the books in the books column, how do I do this? So in the example above, I'd expect the 1st and 5th rows to be returned. I have tried various things using the "in" operator but either get an error or no results, for example :- ``` q)select from books where `book2 in books clientTradeId| book -------------| ---- q)select from books where enlist `books2 in books 'length ```

Original source