我有这个问题,
按如下方式使用查询:
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,但这一切都使它在我需要答案的上下文中变得非常复杂的解决方案。
最佳答案
为什么不在两个表上都添加别名?
SELECT a.* FROM mytable a WHERE a.samefield='2' AND
(SELECT COUNT(*) FROM mytableB b WHERE b.samefield=a.samefield);
关于mysql - 如何使用简写在 mysql 查询中调用字段,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14191400/