Mysql 基于多个表中的条目排除SQL查询的结果
我的数据库中有两个如下所示的表Mysql 基于多个表中的条目排除SQL查询的结果,mysql,sql,Mysql,Sql,我的数据库中有两个如下所示的表 CREATE TABLE IF NOT EXISTS `lab_closure_states` ( state_id INT UNSIGNED NOT NULL AUTO_INCREMENT PRIMARY KEY, lab_id INT UNSIGNED NOT NULL, period_id INT UNSIGNED NOT NULL, date DATE NOT NULL, state BOOL NOT NULL ) ENGINE = MYISAM DE
CREATE TABLE IF NOT EXISTS `lab_closure_states`
(
state_id INT UNSIGNED NOT NULL AUTO_INCREMENT PRIMARY KEY,
lab_id INT UNSIGNED NOT NULL,
period_id INT UNSIGNED NOT NULL,
date DATE NOT NULL,
state BOOL NOT NULL
) ENGINE = MYISAM
DEFAULT CHARACTER SET = utf8
COLLATE = utf8_bin;
CREATE TABLE IF NOT EXISTS `lab_appointments`
(
appointment_id INT UNSIGNED NOT NULL AUTO_INCREMENT PRIMARY KEY,
created DATETIME NOT NULL,
user_id INT UNSIGNED NOT NULL,
lab_id INT UNSIGNED NOT NULL,
period_id INT UNSIGNED NOT NULL,
date DATE NOT NULL,
class_size INT UNSIGNED NOT NULL,
comment TEXT NOT NULL,
lab_is_closed BOOL NOT NULL
) ENGINE = MYISAM
DEFAULT CHARACTER SET = utf8
COLLATE = utf8_bin;
在状态不为FALSE的情况下,是否可以为给定用户选择所有约会?我的复杂之处在于,对于存在的每个labu预约
,我可能不一定要有labu closure\u状态
条目。
谢谢这不是对你的问题文本的严格回答,而是回答问题标题:
SELECT *
FROM lab_appointments root
LEFT OUTER JOIN lab_closure_states satellite
ON satellite.lab_id = root.lab_id
AND satellite.state = 0
WHERE
satellite.state_id IS NULL
上面显示的方法让您有机会在查询中链接多个附属表,并通过简单地将
IS NULL
或IS NOT NULL
放在WHERE
语句中来构建复杂的筛选标准。您会跳过没有lab\u closure\u state条目的条目吗?