MYSQL where 或语句未按预期工作

标签 mysql where-clause

我正在尝试计算此查询中的行数,但是它没有按预期工作,这会返回一个额外的行,它应该是 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/

相关文章:

mysql - 如何使用rails功能解决mysql中的Unicode字符问题

java - 如何在列名称中使用下划线进行 JPQL 查询?

MySql SELECT 语句与 where LIKE 不返回结果

python - 根据另外三个相加的结果在数据框中创建一个新列

mysql - 如何向 DATE 字段添加 7 天

php - 计算 true bool 与 false 的百分比

mysql - SQL:包含 where 子句的计数语句的总和

MySQL - 具有许多 where 条件的查询性能

php - 将 .sql 文件导入到服务器上的数据库中

mysql - 使用 typo3 扩展 flux 9.0.1 更新 colPos