我想选择表中的某一行,其中日期介于同一表中另一行的开始日期和结束日期之间。我的桌子就是这样的。
============================================================================================
id newid start end date
-------------------------------------------------------------------------------------------
1 - 25/01/2018 26/02/2018 25/01/2018
2 1 27/01/2018 27/01/2018 27/01/2018
3 1 05/02/2018 05/02/2018 05/02/2018
4 1 27/02/2018 27/02/2018 27/02/2018
============================================================================================我创建函数来通过id调用结果。
function get($id){
global $wpdb;
$table_name = $wpdb->prefix ."myTable";
$sql = $wpdb->get_results("SELECT * FROM $table_name WHERE id='{$id}'");
return $sql;
}我希望$sql在$id开始日期和结束日期之间返回结果,方法是使用mysql,而不是使用php。
发布于 2018-05-18 17:18:44
您可以使用以下SELECT
SELECT *
FROM table_name t1
WHERE EXISTS (
SELECT *
FROM table_name t2
WHERE t1.date >= t2.start
AND t1.date <= t2.end
AND t1.id <> t2.id
)现在您可以使用以下PHP函数(get):
function get($id) {
global $wpdb;
$table_name = $wpdb->prefix ."myTable";
$sql = $wpdb->get_results("SELECT * FROM $table_name t1 WHERE id = '$id' AND EXISTS (SELECT * FROM $table_name t2 WHERE t1.`date` >= t2.`start` AND t1.`date` <= t2.`end` AND t1.`id` <> t2.`id`)");
return $sql;
}https://stackoverflow.com/questions/50416181
复制相似问题