我使用下面的MySQL语句获取Drupal的帖子,其中ID匹配跨表:WHERE和语句在MySQL
SELECT node.nid,node_revisions.nid,url_alias.nid, 1, FROM_UNIXTIME(node.created), node_revisions.body, node_revisions.title, node_revisions.teaser, url_alias.slug, FROM_UNIXTIME(node.changed), if(node.type='blog', 'post', 'page')
FROM node, node_revisions, url_alias
WHERE (node.type='blog' OR node.type='page')
AND (node.nid=node_revisions.nid)
AND (node.nid=url_alias.nid)
LIMIT 10;
(请注意,我已经做了一些修改url_alias,如果有人在尝试要复制这个)
我必须使用两个和声明,因为,出于某种原因,这是行不通的:
...
WHERE ...
AND (node.nid=node_revisions.nid=url_alias.nid)
...
为什么我不能比拟的ID在一个声明呢?
这看起来真棒。我还没有使用JOIN,或者是LEFT JOIN,所以我还没有真正理解它,但它似乎更具可读性,我同意。谢谢! – bozdoz
这是一个很好的解决方案,但不是一个好的答案。其他答案实际上是详细说明为什么我无法在一个AND语句中比较ID。你可以将这个添加到你的答案,所以我可以标记你的正确吗? – bozdoz
@bozdoz我为您的原始问题添加了更深入的答案。 –