tab_names(虚构示例(
id name
3 - Fred
5 - Fred - Family
7 - Marie
9 - Marie - Family
在以下非常特殊的情况下,"弗雷德"和"弗雷德 - 家庭"是同一个实体。
我需要从"弗雷德 - 家庭"id中获取"弗雷德"id。
我知道这很奇怪...
我的想法要解决:
1-首先,我得到与id 8对应的"名称"(即"弗雷德-家庭"(;
2 - 然后我在数据库中查询对应于值"Fred - 家庭"减去字符串"- 家庭"的行的 id
插图:
$name_family = 'Fred - Family';
SELECT name FROM tab_names WHERE name LIKE "$name_family"
AND name NOT LIKE '% - Family'
任何想法如何构建此查询?谢谢。
您可以直接在SQL中删除"- Family"字符串。
SELECT *
FROM tab_names
WHERE
name = (
SELECT SUBSTRING(name, 1, LENGTH(name) - 9)
FROM tab_names
WHERE id = 8 LIMIT 1
)
第 SUBSTRING(name, 1, LENGTH(name) - 9)
行从名称末尾删除 9 个字符
遵循你的模式,你可以做这样的事情:
1/删除"- 家庭"部分:
$name_family = 'Fred - Family';
$name_family = explode('-', $name_family);
$name = trim($name_family[0]); //eg. Fred
或
$name_family = 'Fred - Family';
$name = str_replace(' - Family', '' ,$name_family); //eg. Fred
2/然后你只需在你的表格中按确切的姓氏搜索:
SELECT name FROM tab_names WHERE name = "$name"
您应该只获取名称Fred
的实体(因此不会返回"Fred - Family"(。
这是你要找的吗?