In one table I have such column with data
Is there possible way to make a query that return this data in this format:
_IDS_ 71554 99188 69337 70534 73575
as separate ids that then I can use it for example in query
WHERE table.o_id NOT IN (_IDS_)
3
Do something like this :
Sélect * from table1 where id not in (sélect cast(strcol as int) from table2);
This should do what your looking for
SELECT * FROM demotbl2 where id not in (SELECT GROUP_CONCAT(TRIM(',' FROM WebImages__images)) FROM demotbl1);
GROUP_CONCAT() = combines rows, TRIM to remove first and last , which would break the searched array
,
Hope it helps
Here’s a fiddle for proof of concept.. 😀 .. Mysql DB Fiddle
Do not store values list in CSV format. Normalize it, store one value per row.
You may test a value against CSV list with FIND_IN_SET() function. You need the tested value not present in any CSV list, so use NOT EXISTS:
SELECT * FROM data_table WHERE NOT EXISTS ( SELECT NULL FROM CSV_table WHERE FIND_IN_SET(data_table.o_id, CSV_table.WebImages__images) );
SELECT CSV_table.id, jsontable.WebImage_id FROM CSV_table CROSS JOIN JSON_TABLE( CONCAT('[', TRIM(BOTH ',' FROM CSV_table.WebImages__images), ']') '$[*]' COLUMNS (WebImage_id INT PATH '$') ) jsontable
Click here to cancel reply.
3
Answers
Do something like this :
This should do what your looking for
SELECT * FROM demotbl2 where id not in (SELECT GROUP_CONCAT(TRIM(',' FROM WebImages__images)) FROM demotbl1);
GROUP_CONCAT() = combines rows, TRIM to remove first and last
,
which would break the searched arrayHope it helps
Here’s a fiddle for proof of concept.. 😀 ..
Mysql DB Fiddle
Do not store values list in CSV format. Normalize it, store one value per row.
You may test a value against CSV list with FIND_IN_SET() function. You need the tested value not present in any CSV list, so use NOT EXISTS: