[英]How do I select multiple rows using multiple columns without using multiple subqueries
我有以下查询:
SELECT name, modelName, color, rarity, slot, power, chapter
FROM items
WHERE items.id = (SELECT head FROM characterdata WHERE steamid = ?)
OR items.id = (SELECT leftHand FROM characterdata WHERE steamid = ?)
OR items.id = (SELECT rightHand FROM characterdata WHERE steamid = ?)
OR items.id = (SELECT feet FROM characterdata WHERE steamid = ?);
它必须执行四次完全相同的查询,这似乎是不好的做法。 我如何重写它以便它只使用两个查询,也就是说它只需要获取一次字符数据?
您可以使用存在:
SELECT name, modelName, color, rarity, slot, power, chapter
FROM items i
WHERE EXISTS (SELECT 1
FROM characterdata cd
WHERE cd.steamid = ? AND
i.id IN (cd.head, cd.leftHand, cd.rightHand, cd.feet)
);
这假设?
始终具有相同的值。
如果不是,您可以将其表达为:
SELECT name, modelName, color, rarity, slot, power, chapter
FROM items i
WHERE EXISTS (SELECT 1
FROM characterdata cd
WHERE (cd.steamid = ? AND i.id = cd.head) OR
(cd.steamid = ? AND i.id = cd.leftHand) OR
(cd.steamid = ? AND i.id = cd.rightHand) OR
(cd.steamid = ? AND i.id = cd.feet)
);
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.