MySQL查询,不显示基于名称的记录

时间:2012-12-10 11:24:04

标签: php mysql

我有一张表可以保存事件。每个事件都有一个名称,但事件根据其名称进行分组。

+---------------+
| NAME          |
+---------------+
| EVENT 1 CHILD |
| EVENT 1 ADULT |
+---------------+

是一个示例行。但是,当我查询事件时,我只想显示一个事件名称。

所以基本上我只想要显示EVENT 1 ADULT,因为孩子通过它的名字链接到它。

我不确定如何在MySQL中执行此操作,我知道我可以执行查询然后使用PHP删除事件,但如果我可以使用MySQL执行此操作,这似乎很愚蠢。

关于如何解决这个问题的任何建议?

谢谢!

2 个答案:

答案 0 :(得分:4)

您只需阅读ADULT这样的日期:

SELECT * FROM table WHERE NAME LIKE '%ADULT%';

或者,如果它总是在最后:

SELECT * FROM table WHERE NAME LIKE '% ADULT';

,如果您需要区分大小写,请尝试以下操作:

SELECT * FROM table WHERE NAME LIKE BINARY '%ADULT%';

答案 1 :(得分:0)

您应该更改表结构以包含parent_id列。这将允许您将子记录显式链接到父级而不基于名称,然后您可以使用以下命令轻松查询父级记录:

SELECT name FROM events WHERE parent_id IS NULL;

编辑:

如果您无法更改数据(根据您的评论),那么您就会遇到类似这样的事情来寻找父母:

SELECT name FROM events WHERE name LIKE '%ADULT%';

寻找特定成年人的孩子:

SELECT name FROM events WHERE name LIKE CONCAT('%', TRIM(TRAILING 'ADULT' FROM '$parentName', '%');

请注意,这是一个完全未经测试的CONCAT与LIKE的使用,所以这只是猜测它会起作用。