我经常发现自己想要编写如下的SQL查询:
SELECT body
FROM node_revisions
where vid = (SELECT vid
FROM node
WHERE nid = 4);
Run Code Online (Sandbox Code Playgroud)
我知道你可以做的有连接和东西,但它们似乎使事情变得更复杂.加入更好的方式吗?它效率更高吗?更容易理解?
连接往往更有效,因为数据库是在考虑集合操作的情况下编写的(连接是设置操作).
但是,性能会因数据库而异,表格的结构,数据量以及查询返回的数量会有所不同.
如果数据量很小,我会使用像你这样的子查询而不是连接.
以下是连接的外观:
SELECT body
FROM node_revisions nr
INNER JOIN node n
ON nr.vid = n.vid
WHERE n.nid = 4
Run Code Online (Sandbox Code Playgroud)
我不会使用您发布的查询,因为有多个节点记录有nid = 4可能会导致它失败.
我会用:
SELECT body
FROM node_revisions
WHERE vid IN (SELECT vid
FROM node
WHERE nid = 4);
Run Code Online (Sandbox Code Playgroud)
这更具可读性或可理解性吗?在这种情况下,这是个人偏好的问题.