我的sql查询
SELECT
team.id,
team.atitle,
team.etitle,
team.cup_id,
team.logo,
team.modarb,
team.count_id,
team.link AS tlink,
country.atitle AS name,
country.etitle AS ename,
cup.id AS catid,
cup.link,
cup.description,
cup.name AS cupname
FROM cup LEFT JOIN team ON (cup.id IN (". implode(', ', 'team.cup_id') ."))
LEFT JOIN country ON (country.id = team.count_id)
where cup.id='5'
行 team.cup_id 看起来像这样 5, 4, 3, 需要知道如何在 mysql 查询中使用 implode
最佳答案
您应该修复您的数据结构,这样您就不会将 id 列表存储为字符串。这样做是错误的、错误的、错误的:
- 将数字存储为字符串是错误的。
- 在没有正确声明外键引用的情况下在表中包含 id 是错误的。
- 当 SQL 提供了一种存储列表的好方法:表时,将列表存储在单个列中是错误的。
以防万一您无法修复数据结构,您可以这样做:
FROM cup LEFT JOIN
team
ON find_in_set(cup.id, team.cup_id) > 0 LEFT JOIN
country
ON (country.id = team.count_id)
我只是将其作为权宜之计,直到您将数据修复为 SQLish 形式。
关于php - mysql查询因两个表连接而爆炸,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/42636357/