如何选择与MySQL中另一列相关的一组列?

How to select a group of columns related to another column in MySQL?

提问人:Ben 提问时间:8/24/2023 更新时间:8/24/2023 访问量:36

问:

我有一个包含用户、文件和文件期限的 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 运算符和子查询是我的朋友,但我在这里没有得到令人满意的结果。因此,很高兴听到一些想法。

多谢!

sql MySQL的 选择 分组依据 拥有

评论

0赞 Eric 8/24/2023
你试过什么吗???

答:

0赞 EdmCoff 8/24/2023 #1

有几种选择。

一种可能性是 a 然后检查:left joinnull

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
 )

你可以在这里看到小提琴

我已经编辑了我的答案以使用,而不仅仅是因为我的边界条件错误了。<=<