我已经尝试了大约2个小时,但没有成功。这是我需要做的一个例子:
桌子
people
:
nameA score
---------------------
someone1 24
someone2 24
someone3 24
someone4 23
someone5 21
someone6 24
someone7 19
someone8 20
someone9 24
someone10 24
runs
:
nameB add
---------------------
someone1 s
someone2
someone2
someone4 s
someone5
someone4
someone7 s
someone8 s
someone7
someone7 s
请注意,这仅是一个直观显示我的问题的示例。无需谈论表的设置。
我想知道的是:
首先,我需要表people
中所有分数小于24的条目(到这里为止很容易)。
下一步是仅s
在表中没有people.name的地方显示结果runs
(我的实际问题)。
输出应为:
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)
本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句