我的 MySQL 数据库中有三个表:学校、家长和学生。 students 有两列 school_id 和 parent_id,它们将 students 中的每一行链接到 parents 中的一行和 schools 中的一行。这种结构是这样的,一位家长可能在多所学校有 child ,但该家长应该只有一个记录。现在我想从 parent 那里选择行,这样无论学生中有多少行指向那个 parent ,都只会拉出一行。目前我的查询看起来像:
$stmt = $db->prepare( "SELECT p.*
FROM parents p
INNER JOIN studnts S ON p.id = s.parent_id
WHERE s.school_id = :schoolID" );
$stmt->execute( array( ':schoolID'=> $schoolID ) );
我什至用 LEFT OUTER JOIN
替换了 INNER JOIN
。没有变化。
这个查询从 parents 中为 students 中的每一行提取一行。有什么帮助吗?
谢谢。
最佳答案
简单地在查询中使用 distinct 会有所帮助
$stmt = $db->prepare( "SELECT distinct p.*
FROM parents p
INNER JOIN studnts S ON p.id = s.parent_id
WHERE s.school_id = :schoolID" );
$stmt->execute( array( ':schoolID'=> $schoolID ) );
关于php - 不重复地从MySQL表中选择,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/34085937/