0

我有一张可以举办活动的桌子。每个事件都有一个名称,但事件会根据其名称进行分组。

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

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

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

我不确定如何在 MySQL 中完全做到这一点,我知道我可以执行查询然后用 PHP 删除事件,但如果我可以用 MySQL 做到这一点,这样做似乎很愚蠢。

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

谢谢!

4

2 回答 2

4

您可以只读取只有ADULT这样的日期:

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

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

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

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

SELECT * FROM table WHERE NAME LIKE BINARY '%ADULT%';
于 2012-12-10T11:36:28.777 回答
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 的使用,所以它只是一个猜想,它会起作用。

于 2012-12-10T11:29:40.277 回答