提问人:Ben 提问时间:8/24/2023 更新时间:8/24/2023 访问量:36
如何选择与MySQL中另一列相关的一组列?
How to select a group of columns related to another column in MySQL?
问:
我有一个包含用户、文件和文件期限的 MySQL 表,如下所示。
用户 | 文件 | 文件年龄 |
---|---|---|
一个 | 1 | 42 |
一个 | 2 | 17 |
一个 | 3 | 4 |
B | 4 | 85 |
B | 5 | 73 |
B | 6 | 11 |
C | 7 | 6 |
C | 8 | 9 |
C | 9 | 3 |
现在,我需要选择年龄较大的特定用户的所有文件的名称 10.没有或只有部分文件且年龄> 10 的用户将不被选择。
使用上面的示例,结果应该是:
用户 | 文件 | 文件年龄 |
---|---|---|
B | 4 | 85 |
B | 5 | 73 |
B | 6 | 11 |
我假设 SQL ALL 运算符和子查询是我的朋友,但我在这里没有得到令人满意的结果。因此,很高兴听到一些想法。
多谢!
本
答:
0赞
EdmCoff
8/24/2023
#1
有几种选择。
一种可能性是 a 然后检查:left join
null
SELECT t1.*
FROM mytable t1 LEFT OUTER JOIN mytable t2
ON t1.users = t2.users AND t2.fileage <= 10
WHERE t2.fileage IS NULL
另一种可能性是使用:not exists
SELECT *
FROM mytable t1
WHERE NOT EXISTS
(
SELECT *
FROM mytable t2
WHERE t1.users = t2.users AND t2.fileage <= 10
)
另一种可能性是使用(正如您在问题中提到的):< ALL
SELECT *
FROM mytable t1
WHERE 10 <= ALL
(
SELECT fileage
FROM mytable t2
WHERE t2.users = t1.users
)
你可以在这里看到小提琴。
我已经编辑了我的答案以使用,而不仅仅是因为我的边界条件错误了。<=
<
评论