Mysql 如何检查表格单元格是空的还是空的?
我从mySQL数据库中选择了一些数据。我只想选择project_id不为NULL或空的数据:Mysql 如何检查表格单元格是空的还是空的?,mysql,Mysql,我从mySQL数据库中选择了一些数据。我只想选择project_id不为NULL或空的数据: $result = $db->query('SELECT * FROM data LEFT JOIN projects ON data.project=projects.project_id GROUP BY data.id WHERE projects.project_id IS NOT NULL OR
$result = $db->query('SELECT *
FROM data
LEFT JOIN projects ON data.project=projects.project_id
GROUP BY data.id
WHERE projects.project_id IS NOT NULL
ORDER BY data.id DESC
')->fetchAll(PDO::FETCH_ASSOC);
但我收到一条错误消息:
未捕获PDOException:SQLSTATE[42000]:语法错误或访问
违反:1064您的SQL语法有错误;检查手册
对应于MySQL服务器版本的正确语法
在第21行的“WHERE projects.project_id不为NULL ORDER BY d”附近使用
where
子句位于groupby
$result = $db->query('SELECT *
FROM data
LEFT JOIN projects ON data.project=projects.project_id
WHERE projects.project_id IS NOT NULL
GROUP BY data.id
ORDER BY data.id DESC
')->fetchAll(PDO::FETCH_ASSOC);
我相信您已经有了主键,您不需要显式地添加
null
检查。如果您只需要匹配的数据集,请使用内部联接
而不是左联接
这应该是可行的,您只是没有遵循where
和order by
的正确语法
$result = $db->query('SELECT *
FROM data
LEFT JOIN projects ON data.project=projects.project_id
WHERE projects.project_id IS NOT NULL
GROUP BY data.id
ORDER BY data.id DESC
')->fetchAll(PDO::FETCH_ASSOC);
对于查询,应该有一个正确的语法,因为GROUPBY将位于where之前。 查询应该是
SELECT * FROM data
LEFT JOIN projects ON data.project=projects.project_id
WHERE projects.project_id IS NOT NULL
GROUP BY data.id
ORDER BY data.id DESC
如果可能的话,请投票关闭这些打字错误问题。最好是内部连接,而不是左连接,以避免不必要的空检查