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