Используйте случай, когда в Mysql - PullRequest
0 голосов
/ 09 февраля 2019

В моем запросе есть ошибка, но я не могу найти причину.Я хотел бы найти тот же номер телефона в соответствии с условием.

Я пытался с условием, если.

SELECT count(t.id) as sayi from student as t 
    inner join student s on s.id!= t.id                                  
    where case 
          when one_or_two=$one_or_two and one_or_two = 1 then 
                s.first_phone = t.first_phone 
          when one_or_two=$one_or_two and one_or_two = 2 then 
                s.sec_phone = t.sec_phone
          else 1=1
          end
    and t.id=4327

Если $ one_or_two = 1

, это условие должно работать s.first_phone = t.first_phone


Если $ one_or_two = 2

это условие должно работать s.sec_phone = t.sec_phone

1 Ответ

0 голосов
/ 09 февраля 2019

Ваше состояние

when one_or_two = $one_or_two and one_or_two = 1   

эквивалентно на

 one_or_two = 1  

, поэтому ваш код должен быть уменьшен до

  SELECT count(t.id) as sayi 
  from student as t 
  inner join student s on s.id!= t.id                                  
  where case 
            when one_or_two = 1 
              then 
                  s.first_phone = t.first_phone 
            when one_or_two = 2 then 
                  s.sec_phone = t.sec_phone
            else 1=1
            end

      and t.id=4327

или

  SELECT count(t.id) as sayi 
  from student as t 
  inner join student s on s.id!= t.id                                  
  where case 
            when one_or_two = 1 AND   s.first_phone = t.first_phone  THEN 1 else 0 
            when one_or_two = 2 AND  s.sec_phone = t.sec_phone then 1 else 0
            else 0
            end
  and t.id=4327
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...