我需要构建查询,它将仅显示不包含指定状态的行。
每行都有名为“状态”的列,其中包含空格分隔的值。例如:“Pay req. sent” 我需要查找没有“已发送”状态的行。在超过 5 000 000 行的数据库中如何查看最佳查询?
我需要构建查询,它将仅显示不包含指定状态的行。
每行都有名为“状态”的列,其中包含空格分隔的值。例如:“Pay req. sent” 我需要查找没有“已发送”状态的行。在超过 5 000 000 行的数据库中如何查看最佳查询?
要找到您想要的行,您可以执行以下操作:
SELECT *
FROM table_name
WHERE concat(' ',status,' ') not like '% sent %'
如果状态总是出现在字段的末尾并且总是以空格为前缀
SELECT *
FROM table_name
WHERE status not like '% sent'
尝试这个...
SELECT *
FROM from_table t
WHERE t.status not like '%sent'
你可以在 set 中使用 find:-
SELECT *
FROM SomeTable
WHERE FIND_IN_SET('sent', REPLACE(status, ' ', ',')) > 0
但长期更改数据库设计以将状态字段拆分到另一个表中,每个状态一行。