我们有MYSQL表,其中包含ID,PARENT_ID和合同条款:
CONTRACTTERM
+-----------------+-------------+------+-----+---------+
| Field | Type | Null | Key | Default |
+-----------------+-------------+------+-----+---------+
| ID | bigint(20) | NO | PRI | NULL |
| PARENT_ID | bigint(20) | YES | MUL | NULL |
| FROM_DATE | date | YES | MUL | NULL |
| TO_DATE | date | YES | MUL | NULL |
要查找FROM_DATE和TO_DATE,需要使用parent_id进行遍历,直到parent_id为NULL。然后,最后一个父母FROM_DATE和TO_DATE显示合同条款。是否可以使用SQL找到这些日期?
其中一个选项是使用以下SQL,但仅当我们知道迭代次数时它才有效:
SELECT t1.ID, t4.FROM_DATE, t4.TO_DATE FROM CONTRACTTERM t1, CONTRACTTERM t2,
CONTRACTTERM t3, CONTRACTTERM t4 WHERE t1.ID in (27533, 57665, 58057)
and t2.ID=t1.PARENT_ID
and t3.ID=t2.PARENT_ID
and t4.ID=t3.PARENT_ID
and t4.PARENT_ID IS NULL
ORDER BY t4.TO_DATE DESC;
答案 0 :(得分:0)
您应该可以使用LIMIT和ORDER BY来获取这些日期。如果您正在寻找特定PARENT_ID的最新合约日期,请尝试以下方式:
SELECT * FROM CONTRACTTERM WHERE PARENT_ID =(:parent_id)ORDER BY TO_DATE DESC LIMIT 1
如果您尝试使用非空PARENT_ID获取任何合约的最新日期,请尝试:
SELECT * FROM CONTRACTTERM WHERE PARENT_ID不是NULL ORDER BY TO_DATE DESC LIMIT 1
ps:我发现了这个信息 http://www.mysqltutorial.org/mysql-limit.aspx 和 http://www.techonthenet.com/sql/is_not_null.php