Mysql SQL内部查询语法
我在MySQL上的以下嵌套查询中尝试的任何操作都会遇到相同的语法错误:Mysql SQL内部查询语法,mysql,sql,Mysql,Sql,我在MySQL上的以下嵌套查询中尝试的任何操作都会遇到相同的语法错误: SELECT count(*) FROM TABLE_A AS A WHERE A.COND = '2K' AND A.B_ID = : SELECT B.B_ID FROM TABLE_B AS B WHERE B.NAME = 'XYZ'; 请注意
SELECT count(*) FROM TABLE_A AS A
WHERE A.COND = '2K' AND A.B_ID = : SELECT B.B_ID
FROM TABLE_B AS B
WHERE B.NAME = 'XYZ';
请注意,表_B上的名称列条目是唯一的,查询逻辑不需要连接
如何修复语法
天真的Q——早就不是原生SQL了
蒂亚 您需要对子查询使用paren:
SELECT count(*)
FROM TABLE_A AS A
WHERE A.COND = '2K' AND
A.B_ID = (SELECT B.B_ID
FROM TABLE_B AS B
WHERE B.NAME = 'XYZ');
如果它可以返回多个值,那么您可能希望在中输入,而不是=
:
SELECT count(*)
FROM TABLE_A AS A
WHERE A.COND = '2K' AND
A.B_ID IN (SELECT B.B_ID
FROM TABLE_B AS B
WHERE B.NAME = 'XYZ');
您可以避免显式子查询,而是使用显式联接:
SELECT COUNT(*) AS COUNT
FROM TABLE_A AS A
JOIN TABLE_B AS B ON A.B_ID = B.B_ID
WHERE A.COND = '2K'
AND B.NAME = 'XYZ';
如果您需要子查询,那么s就可以了。您会遇到什么错误?已解决。在那个中间人的某个地方有“独特”的地方!在你测量它之前,Join不会慢。无论如何,优化器可能会将子查询转换为联接。