需要帮助来构建查询

时间:2017-04-28 10:02:46

标签: mysql sql laravel-5.2

My table looks like this

现在我想要有一个其中leader_board_no不等于1的年份列表。

我的预期结果是:

  • 2016
  • 2017

但是当我跑步时

select `year` from `leaderboard_log` where `leader_board_no` != 1 and `year` != 2017 group by `year`

我只有2016年。

请有人帮我构建查询。

3 个答案:

答案 0 :(得分:0)

如果您需要所有结果,

除外
  1. 年份等于2017
    1. 领导委员会等于1.
    2. 您可以使用NOT查询

      where not (year = 2017 and LEADER_BOARD = 1);
      

答案 1 :(得分:0)

假设您要求结果仅在leader_board_no <> 1时符合year = 2017条件,那么只需使用OR

select `year` from `leaderboard_log` where `leader_board_no` != 1 or `year` != 2017 group by `year`

答案 2 :(得分:0)

得到我的答案

SELECT
  `year`
FROM
  `leaderboard_log`
WHERE
  id NOT IN(
  SELECT
    id
  FROM
    `leaderboard_log`
  WHERE
    `leader_board_no` = 1 AND `year` = 2017
)
GROUP BY
  `year`

在Laravel 5.2中:

         $getYears = LeaderboardLog::select('year','id')
         ->whereNotIn('id', function($q) use ($current_leaderboard,$current_year){
              $q->select('id')
              ->where('leader_board_no','=',$current_leaderboard)
              ->where('year','=',$current_year);
          })->groupBy('year')->get();