0

我有这个问题,

使用如下查询:

    mysql_query("SELECT * FROM mytable WHERE samefield='2' AND (SELECT
    COUNT(*) FROM mytableB as d WHERE d.samefield=samefield)");

返回我错误的结果,理想的工作如下:

    mysql_query("SELECT * FROM mytable WHERE samefield='2' AND (SELECT
    COUNT(*) FROM mytableB as d WHERE d.samefield=mytable.samefield)");

请注意,我必须如何显式输入 mytable 的名称才能知道精确查找并从数据库中获得正确的结果,是否有明确的通配符用作最外层的父查询以确定 d.samefield 应该等于在不知道它的别名的情况下到第一个父级, d.samefield=thewildcard.samefield 是我要寻找的,或者以某种方式指定它应该在其父级上查找。

因为如果我使用 d.samefield=samefield 它只是不坚持父的值,因为看起来问题是有一个同名的字段,对表 a 的查询和对表 b 的子查询,如果它工作最简单的是必须始终在子查询上声明一个别名,并让第一个父查询字段成为 mysql 要查找的字段,但它似乎不能以这种方式工作。

我知道整个问题听起来有点愚蠢,但这对我来说很重要,因为我已经在这个问题上待了 3 个小时,并尝试了诸如 php 函数之类的方法来发送表名,我想将子查询附加到主表中查询,甚至还尝试过 php 的 eval 但这一切都使得它在我需要答案的上下文中变得非常复杂。

4

1 回答 1

1

为什么不在两个表上都放一个别名?

SELECT a.* FROM mytable a WHERE a.samefield='2' AND
(SELECT COUNT(*) FROM mytableB b WHERE b.samefield=a.samefield);
于 2013-01-07T07:14:37.397 回答