我尝试了大约 2 个小时,但没有成功。这是我需要做的示例:
表格
人员
:
nameA score
---------------------
someone1 24
someone2 24
someone3 24
someone4 23
someone5 21
someone6 24
someone7 19
someone8 20
someone9 24
someone10 24
运行
:
nameB add
---------------------
someone1 s
someone2
someone2
someone4 s
someone5
someone4
someone7 s
someone8 s
someone7
someone7 s
请注意,这只是一个直观地展示我的问题的示例。无需谈论我的 table 设置。
我想知道:
首先,我需要表 people
中分数小于 24 的所有条目(到这里为止很简单)。
下一步是仅显示 people.name 在表 runs
中没有 s
的结果(我的实际问题)。
输出应该是:
name score
---------------------
someone2 22 /* no "s"-entry in runs */
someone5 21 /* also no entries */
不幸的是我对连接不太熟悉。 这是我最后一次尝试:
SELECT nameA,score FROM runs,people WHERE people.nameA = runs.nameB
AND people.score < 24
AND runs.add != "s"
GROUP BY people.nameA
伪代码:
foreach Person in (SELECT nameA as Person,score FROM people WHERE score < 24)
SHOW name.B = Person WHERE add != "s"
我知道这很糟糕:)。但它用两行描述了我需要的内容。
如果有任何帮助,我将不胜感激。
谢谢!
最佳答案
select * from people where score<24 and
name in (select name from runs where add!=s) and
name not in (select name from runs where add=s)
关于mysql - 从 2 个具有不同条件的表中选择,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/28559258/