使用 all 运算符选择子查询而不加入 mysql
Selecting sub queries using all operator without joining in mysql
我需要显示部门 1 的所有工人的 ID、姓名和出生日期,这些工人比部门 2 的工人年轻。我正在尝试 而没有 加入。
这是我目前的情况,当我 运行 它不会失败,但它会显示部门 2 的所有员工,无论他们的生日如何。
SELECT ID, CONCAT(fName," " ,lName) AS "Worker Name", dob
FROM Worker
WHERE dob <= ALL (SELECT department
FROM Worker
WHERE deparment = 1
)
AND deparment = 2;
你想检查 dob 那么你应该 select dob
SELECT ID, CONCAT(fName," " ,lName) AS "Worker Name", dob
FROM Worker
WHERE dob <= ALL (SELECT dob
FROM Worker
WHERE deparment = 1
)
AND deparment = 2;
这应该列出部门 1 中比部门 2 中的工人更年轻的所有工人:
SELECT ID, CONCAT(fName," " ,lName) AS "Worker Name", dob
FROM Worker
WHERE dob < (SELECT min(w2.dob)
FROM Worker w2
WHERE w2.deparment = 2
)
AND deparment = 1
我需要显示部门 1 的所有工人的 ID、姓名和出生日期,这些工人比部门 2 的工人年轻。我正在尝试 而没有 加入。
这是我目前的情况,当我 运行 它不会失败,但它会显示部门 2 的所有员工,无论他们的生日如何。
SELECT ID, CONCAT(fName," " ,lName) AS "Worker Name", dob
FROM Worker
WHERE dob <= ALL (SELECT department
FROM Worker
WHERE deparment = 1
)
AND deparment = 2;
你想检查 dob 那么你应该 select dob
SELECT ID, CONCAT(fName," " ,lName) AS "Worker Name", dob
FROM Worker
WHERE dob <= ALL (SELECT dob
FROM Worker
WHERE deparment = 1
)
AND deparment = 2;
这应该列出部门 1 中比部门 2 中的工人更年轻的所有工人:
SELECT ID, CONCAT(fName," " ,lName) AS "Worker Name", dob
FROM Worker
WHERE dob < (SELECT min(w2.dob)
FROM Worker w2
WHERE w2.deparment = 2
)
AND deparment = 1