gpt4 book ai didi

php - MySQL选择有和没有关系的行

转载 作者:可可西里 更新时间:2023-11-01 08:10:10 26 4
gpt4 key购买 nike

假设我有 2 个 mysql 表 'movies' 和 'seen'

如果用户已经看过一部电影,则在“已看”表中有一条记录,其中包含他的用户 ID 和电影 ID

我必须打印所有 电影,然后如果用户已经看过电影,则打印“已观看”,否则打印“观看”。

此时我使用 PHP 进行 2 个单独的查询:

<?php
$res = mysql_query( "SELECT * FROM movies" );
while( $row = mysql_fetch_assoc( $res ) ) {
echo $row['movie_name'];
$res2 = mysql_query( "SELECT * FROM seen WHERE userID = '$uid' AND movieID = '$row[id]' LIMIT 1" );
if( mysql_num_rows( $res2 ) == 1 ) { echo "already watched"; } else { echo "to watch"; }
}

有一种方法可以通过一个查询来做到这一点吗?

在“movies.id = seen.movi​​eID”上使用 JOIN 时,它只打印观看过的电影,“WHERE movies.id NOT IN ( SELECT seen.movi​​eID FROM seen WHERE seen.userID = '$uid' ) "它只打印未观看的..

最佳答案

在这种情况下,您可以使用 from LEFT JOIN,在左联接中,您可以看到第一个表中的数据,而不是第二个表中的数据。

SELECT * FROM movies LEFT JOIN seen ON movies.id = seen.movieID

如果看到表的数据在结果数据上存在,如果不是用户没有看到。

您也可以在您的解决方案中使用 UNION 并合并查询

关于php - MySQL选择有和没有关系的行,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/37360261/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com