这是使用联合的一种选择。该查询背后的症结在于,我们生成了一个
state_id将customer表加入其中的逻辑列。该表包含
state_id给定状态的当前值和替换值。
SELECt c.customer_id, t.state_created, t.state_nameFROM Customer cINNER JOIN( SELECt state_id, state_name, state_created FROM Historical_state UNIOn ALL SELECt h1.state_id, h2.state_name, h2.state_created FROM Historical_state h1 INNER JOIN Historical_state h2 ON h1.replace_state_id = h2.state_id) t ON c.current_state_id = t.state_id;
这是MySQL中的一个演示,因为Rextester不支持SQLite,但至少表明查询逻辑是正确的。
演示版欢迎分享,转载请注明来源:内存溢出
评论列表(0条)