好吧,你在这里有一个一对多的关系。这意味着 table1 中的一行可以与 table2 中的 0-n 行相关。
如果您按 table1 的主键分组,则将结果限制为表一中每一行的一个结果行,方法是使用GROUP_CONCAT(table2_col)
默认情况下为逗号的分隔符连接 table2_column 的所有匹配行。
使用以下查询:
SELECT
t1.*,
GROUP_CONCAT(t2.content_id) AS content_ids,
GROUP_CONCAT(t2.title) AS content_titles
FROM
news_categories t1
LEFT JOIN news_content t2 ON t2.cat_ids = t1.cat_id
GROUP BY t1.cat_id
或者
SELECT
t1.*,
t2.*
FROM
news_categories t1
LEFT JOIN news_content t2 ON t2.cat_ids = t1.cat_id
我建议写出你想要的列,而不是使用 .*
编辑
要分离 php 中的连接值,请查看explode
你像往常一样获取数据,例如
$result = mysqli_query( $query );
while ( $row = mysqli_fetch_assoc( $result ) ) {
print_r( $row );
}
看看这个例子