带案例的Mysql查询

SELECT *, CASE
    WHEN paydatefinal IS NULL OR paydatefinal = '0000-00-00' THEN paydate
    ELSE    paydatefinal END AS `paydatefinColumn`
FROM
    `ws_crm_comenzi`
WHERE
    `sezonId` = '4'
AND `service_id` = '1'
AND `finished` = '1'
 AND `paydatefinColumn`='2016-09-26'
ORDER BY `paydatefinColumn` DESC

how can i make an AND From An Column (paydatefinColumn) that is made in a case but in table this column dose't exist

Since that generated column is rather lengthy and you cannot use a generated column in a where clause, the easiest perhaps to wrap the whole thing in another select

SELECT * FROM (

    SELECT *, CASE
        WHEN paydatefinal IS NULL OR paydatefinal = '0000-00-00' THEN paydate
        ELSE    paydatefinal END AS `paydatefinColumn`
    FROM
        `ws_crm_comenzi`
    WHERE
        `sezonId` = '4'
    AND `service_id` = '1'
    AND `finished` = '1'
     AND `paydatefinColumn`='2016-09-26'
    ORDER BY `paydatefinColumn` DESC)

 AS A WHERE paydatefinColumn = whatever

You should repeat the code this way

  SELECT *, CASE
      WHEN paydatefinal IS NULL OR paydatefinal = '0000-00-00' THEN paydate
      ELSE    paydatefinal END AS `paydatefinColumn`
  FROM
      `ws_crm_comenzi`
  WHERE
      `sezonId` = '4'
  AND `service_id` = '1'
  AND `finished` = '1'
   AND (CASE
      WHEN paydatefinal IS NULL OR paydatefinal = '0000-00-00' THEN paydate
      ELSE    paydatefinal END  ) = str_toDate('2016-09-26', '%Y-%m-%d')
  ORDER BY `paydatefinColumn` DESC

You need to repeat the CASE statement in the where clause

SELECT *, CASE
    WHEN paydatefinal IS NULL OR paydatefinal = '0000-00-00' THEN paydate
    ELSE    paydatefinal END AS `paydatefinColumn`
FROM
    `ws_crm_comenzi`
WHERE
    `sezonId` = '4'
AND `service_id` = '1'
AND `finished` = '1'
AND
 CASE
    WHEN paydatefinal IS NULL OR paydatefinal = '0000-00-00' THEN paydate
    ELSE    paydatefinal END='2016-09-26'
ORDER BY `paydatefinColumn` DESC 

You can simply do that by adding it in a subquery

SELECT * from (SELECT *, CASE WHEN paydatefinal IS NULL OR paydatefinal = '0000-00-00'  
 THEN paydate
ELSE  
 paydatefinal END AS `paydatefinColumn` FROM `ws_crm_comenzi` WHERE `sezonId` = '4' AND `service_id` = '1' AND `finished` = '1')as TEMP  
 where  TEMP.paydatefinColumn='2016-09-26' ORDER BY TEMP.paydatefinColumn DESC;