我正在尝试计算此查询中的行数,但是它没有按预期工作,这会返回一个额外的行,它应该是 12,但它是 13。
$numPhotos = mysql_num_rows(mysql_query("
SELECT albums.id
FROM albums, albumData
WHERE
(albumData.id=albums.albumID OR albums.albumID=0)
AND
albums.userID=$id
AND albums.state=0
AND albumData.state=0
"));
当我删除OR语句部分,并且不统计albumID=0的行时,它返回11。只有一行albumID为0,但它算作2行?
$numPhotos = mysql_num_rows(mysql_query("
SELECT albums.id
FROM albums, albumData
WHERE
albumData.id=albums.albumID
AND
albums.userID=$id
AND albums.state=0
AND albumData.state=0
"));
最佳答案
尝试使用 JOIN 编写查询:
SELECT albums.id FROM albums
LEFT JOIN albumData
ON albums.albumID=albumData.id
AND albums.state=0
AND albumData.state=0
WHERE albums.userID=$id
或
SELECT albums.id FROM albums
LEFT JOIN albumData
ON albums.albumID=albumData.id
WHERE albums.userID=$id
AND albums.state=0
AND albumData.state=0
这能解决你的问题吗?
编辑:
试试这个
SELECT DISTINCT albums.id FROM albums
INNER JOIN albumData
ON (albums.albumID = albumData.id OR albums.albumID = 0)
AND albums.state=0
AND albumData.state=0
WHERE albums.userID=$id
关于MYSQL where 或语句未按预期工作,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8978021/