php - mysql查询因两个表连接而爆炸

标签 php mysql implode

我的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/

相关文章:

php - MySQL插入重复键更新多个值

php - 在php循环中增加不存在的变量

php - 浏览器中的模型 SQL 语法错误是否有更简单的快捷方式替换

javascript - 如何删除嵌套 foreach 中的循环数组值?

php - 如何每天从另一台服务器自动加载数据

mysql - 图像数组上的 Laravel 内爆函数

php - 用键内爆关联数组的最快方法

php - 如何使用内爆函数将关联数组转换为字符串

php - 在mysql数据库中存储排名

php - 在 PHP 和 MySQL 中创建一组用户