检查mysql id集合中的id集合(第一个集合中的每一项,必须在第二个集合中)


+-----------+---------+
| InvoiceId | trueIDs |
+-----------+---------+
| ab12345   | 1,2,35  |
| cd1234567 | 92,28,1 |
| asdf12345 | 351,8,1 |
+-----------+---------+
UserAllowed (925,28,1,99,1059,314,422,96,917,356)

有没有办法比较两组id ?我想选择最好的性能方式,在两组变量之间进行比较,如果第一组的一个项目存在于表中,则返回InvoiceId…

php中有一个数组,db table cell中有一个逗号分隔的字符串。

如果数组值(UserAllowed)存在于数据库(trueIDs)中,则返回InvoiceId。

可能是php数组太大,对每个php数组项执行查询不符合逻辑。

SELECT
Invoices.InvoiceId
FROM
Invoices 
WHERE
(925,28,1,99,1059,314,422,96,917,356) ???? Invoices.trueIDs
SELECT Invoices.InvoiceId
FROM Invoices 
WHERE JSON_OVERLAPS(CONCAT('[', @UserAllowed, ']'), CONCAT('[', trueIDs, ']'));

https://dbfiddle.uk/?rdbms=mysql_8.0&小提琴= 62 fae329e23d3f2885c6b16ce1770765

最新更新