Mysql 代码>和小时费率。 +--------+--------+-----------+-----------------------+-----------+ | emp No | sal_id | value | effective_date

Mysql 代码>和小时费率。 +--------+--------+-----------+-----------------------+-----------+ | emp No | sal_id | value | effective_date ,mysql,if-statement,logic,where,Mysql,If Statement,Logic,Where,代码>和小时费率。 +--------+--------+-----------+-----------------------+-----------+ | emp No | sal_id | value | effective_date | is_active | +--------+--------+-----------+-----------------------+-----------+ | 817 | 1 | DED914E3B | 01/0

代码>和
小时费率
。 +--------+--------+-----------+-----------------------+-----------+ | emp No | sal_id | value | effective_date | is_active | +--------+--------+-----------+-----------------------+-----------+ | 817 | 1 | DED914E3B | 01/04/2013 | 1 | | 817 | 2 | 0 | 0 | 0 | | 820 | 1 | 8238942BE | 02/04/2013 | 1 | | 820 | 2 | EA42574E4 | 02/04/2013 | 1 | +--------+--------+-----------+-----------------------+-----------+ +--------+--------+-----------+----------------+-----------+ | emp No | sal_id | value | effective_date | is_active | +--------+--------+-----------+----------------+-----------+ | 817 | 1 | DED914E3B | 01/04/2013 | 1 | | 820 | 2 | EA42574E4 | 02/04/2013 | 1 | +--------+--------+-----------+----------------+-----------+
select es.emp_no, es.sal_id, value, effective_date, is_active from employee_salary es
join ( 
     select emp_no, max(sal_id) as sal_id from employee_salary
         where is_active<>0
         group by emp_no
) selector
where es.emp_no=selector.emp_no and es.sal_id=selector.sal_id
SELECT
    es1.emp_no,
    IF(es2.is_active=1, es2.sal_id, es1.sal_id) AS sal_id,
    IF(es2.is_active=1, es2.value, es1.value) AS value,
    IF(es2.is_active=1, es2.effective_date, es1.effective_date) AS effective_date,
    IF(es2.is_active=1, es2.is_active, es1.is_active) AS is_active
FROM employee_salary es1
    LEFT JOIN employee_salary es2 ON (es2.emp_no=es1.emp_no AND es2.sal_id=2)
WHERE es1.sal_id=1;
+--------+--------+-----------+----------------+-----------+
| emp_no | sal_id | value     | effective_date | is_active |
+--------+--------+-----------+----------------+-----------+
|    817 |      1 | DED914E3B | 01/04/2013     |         1 |
|    820 |      2 | EA42574E4 | 02/04/2013     |         1 |
+--------+--------+-----------+----------------+-----------+
+----+-------------+-------+------+---------------+------+---------+------+------+-------------+
| id | select_type | table | type | possible_keys | key  | key_len | ref  | rows | Extra       |
+----+-------------+-------+------+---------------+------+---------+------+------+-------------+
|  1 | SIMPLE      | es1   | ALL  | NULL          | NULL | NULL    | NULL |    4 | Using where |
|  1 | SIMPLE      | es2   | ALL  | NULL          | NULL | NULL    | NULL |    4 |             |
+----+-------------+-------+------+---------------+------+---------+------+------+-------------+
+----+-------------+-----------------+------+---------------+------+---------+------+------+----------------------------------------------+
| id | select_type | table           | type | possible_keys | key  | key_len | ref  | rows | Extra                                        |
+----+-------------+-----------------+------+---------------+------+---------+------+------+----------------------------------------------+
|  1 | PRIMARY     | <derived2>      | ALL  | NULL          | NULL | NULL    | NULL |    2 |                                              |
|  1 | PRIMARY     | es              | ALL  | NULL          | NULL | NULL    | NULL |    4 | Using where; Using join buffer               |
|  2 | DERIVED     | employee_salary | ALL  | NULL          | NULL | NULL    | NULL |    4 | Using where; Using temporary; Using filesort |
+----+-------------+-----------------+------+---------------+------+---------+------+------+----------------------------------------------+