-2

我需要构建查询,它将仅显示不包含指定状态的行。

每行都有名为“状态”的列,其中包含空格分隔的值。例如:“Pay req. sent” 我需要查找没有“已发送”状态的行。在超过 5 000 000 行的数据库中如何查看最佳查询?

4

3 回答 3

1

要找到您想要的行,您可以执行以下操作:

SELECT * 
FROM table_name 
WHERE concat(' ',status,' ') not like '% sent %'

如果状态总是出现在字段的末尾并且总是以空格为前缀

SELECT * 
FROM table_name 
WHERE status not like '% sent'
于 2013-07-02T10:44:39.960 回答
1

尝试这个...

SELECT * 
FROM from_table t
WHERE t.status not like '%sent'
于 2013-07-02T10:47:17.690 回答
1

你可以在 set 中使用 find:-

SELECT *
FROM SomeTable
WHERE FIND_IN_SET('sent', REPLACE(status, ' ', ',')) > 0

但长期更改数据库设计以将状态字段拆分到另一个表中,每个状态一行。

于 2013-07-02T11:11:15.777 回答