这是我的桌子的图像:
我想选择所有 class_id 不等于 48 的行,如下所示:
SELECT * FROM `clients` WHERE `class_id` != '$class_id' AND user_id = ".$_SESSION['user_id']."
这就是问题所在,正如您所看到的,Steve Puddin Robinson 有一排 class_id 为 48 和 class_id 为 64。由于此人已经在第 48 班,我也想从结果中排除该名称。这有意义吗?如果不将特定的first_name
last_name
和传递nickname
给查询,这是否可能
工作查询
SELECT *
FROM `clients`
WHERE `user_id`= ".$_SESSION['user_id']." AND `nickname`
NOT IN(SELECT `nickname` FROM `clients`
WHERE `class_id` = '$class_id')
修改后的查询
SELECT c.* FROM clients c
LEFT JOIN clients c1
ON `c1`.`first_name` = `c`.`first_name`
AND `c1`.`last_name` = `c`.`last_name`
AND `c1`.`nickname` = `c`.`nickname`
AND `c1`.`class_id` = 48
WHERE `c1`.`class_id` IS NULL;