SELECT S.sname
FROM Sailors S
WHERE S.sid NOT IN (SELECT R.sid
FROM Reserves R
WHERE R.bid NOT IN (SELECT B.bid
FROM Boats B
WHERE B.color='red'))
试图理解这一点。这个查询如何找到只保留红船和水手的水手的名字,这些船只根本没有预留任何船只。 NOT IN
嵌套在另一个NOT IN
中的工作原理是什么?
答案 0 :(得分:0)
您的查询显示的sailors
reserves
不在red
中且船只不是SELECT S.sname
FROM Sailors S
WHERE S.sid NOT IN (SELECT R.sid
FROM Reserves R
WHERE R.bid IN (SELECT B.bid
FROM Boats B
WHERE B.color <> 'red'))
。
你可以用这种方式重写它:
TextField {
id: textField
menu: null
property color activeColor : Properties.textField.enabledColor
property color deactiveColor : Properties.textField.disabledColor
property bool convertToUCase : false;
property int closeImageSize: 26
property int renderType: Text.QtRendering
style: Style.textFieldStyle
onTextChanged: {
text = (convertToUCase) ? text.toUpperCase() : text;
}
}
答案 1 :(得分:0)
此查询尝试排除所有使用红色以外的任何颜色保留船只的水手。我相信我们可以使用JOIN
使其更具可读性,例如:
SELECT s.name
FROM sailors s LEFT JOIN reserves r ON s.sid = r.sid
JOIN boats b on r.bid = b.bid
WHERE b.color = 'Red'
GROUP BY s.name
HAVING COUNT(DISTINCT(b.color)) <= 1;