mysql - 为什么这个 IF THEN SQL 语句会返回错误?

标签 mysql sql if-statement

我想在此 SQL 中执行条件右连接

SELECT *
 FROM   post
   IF   1 = 1 THEN RIGHT JOIN faves ON faves.post_id_fk = post_id;  // <== error
END IF;
 WHERE  post_author_id
        LIKE 1
 ORDER  BY post_timestamp DESC
 LIMIT  0, 10

有更好/正确的方法吗?

最佳答案

您的病情从何而来?

  1. 如果它来自 SQL 外部,为什么不确定是否将联接放入该级别的查询中:

    $qry = "SELECT * FROM post " . ($test ? " RIGHT JOIN ... " : "") . "...";
    
  2. 否则,如果必须在 SQL 中进行测试,我会将不同的语句分开:

    DELIMITER ;;
    
    IF @test THEN
        SELECT * FROM post RIGHT JOIN ... ;
    ELSE
        SELECT * FROM post ... ;
    END IF;;
    
    DELIMITER ;
    

关于mysql - 为什么这个 IF THEN SQL 语句会返回错误?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10366223/

相关文章:

PHP 在从数据库检索时截断散列密码

sql - 当前事务无法提交,并且无法支持写入日志文件的操作。回滚事务

java - 循环验证直到用户选择正确的选项,如果没有选择正确的选项则继续循环

javascript - 使用 jQuery 在页面上的不同高度添加和删除类

mysql - 使用 Doctrine 、Symfony 4 创建数据库时访问被拒绝

mysql - mysql 的 jdbc url 不适用于 IP 地址

mysql - 无法使用 unix_timestamp 函数添加更新事件

php - MySQL 查询从每个用户返回行

php - MySQL-替换整个表中所有行和列的空间

python - 想要从输出中获得最大值并将其应用到方程中