如何确定MySQL查询是否有效?

时间:2010-06-21 15:02:52

标签: mysql

查看herehere

通过上面的答案,我做了这个查询,它有效吗?如果没有,我该如何纠正?

SELECT *,
 FROM TABLE_2 t
 WHERE EXISTS(SELECT IF(column1 = 'smith', column2, column1)       
 FROM TABLE_1 a
 WHERE 'smith' IN (a.column1, a.column2)
        AND a.status = 1              
                AND ( 'smith' IN (t.column1, t.column2)
               )

1 个答案:

答案 0 :(得分:1)

首先,select *之后的逗号不属于。

其次,您对表(table_2 ttable_1 a)进行别名,但之后不会始终使用别名,因此在运行时可能会出现问题。另外从维护的角度来看,我认为大多数人更喜欢在声明时使用别名,否则不会使用别名。

第三,在外部选择('smith' in (t.column1, t.column2))中对t表进行比较时,这似乎是不必要的。您可以在外部选择中执行此操作。换句话说,您可以将该终端paren移到AND ('smith' ...

之前

至于它是否有效 - 我不知道,因为我不知道你想要完成什么。

合并,这会让你:

SELECT t.*
FROM TABLE_2 t
WHERE EXISTS (SELECT IF(a.column1 = 'smith', a.column2, a.column1)       
              FROM TABLE_1 a
              WHERE 'smith' IN (a.column1, a.column2)
              AND a.status = 1)
AND ( 'smith' IN (t.column1, t.column2)