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

如何确定MySQL查询是否有效?,mysql,Mysql,看一看 根据上面的答案,我提出了这个问题,它有效吗?如果没有,我如何更正 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 ( '

看一看

根据上面的答案,我提出了这个问题,它有效吗?如果没有,我如何更正

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)
               )

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

其次,将表命名为table_2t和table_1a,但是没有一致地使用别名,因此在运行时可能会出现问题。同样从维护的角度来看,我认为大多数人更喜欢在声明时使用别名,否则就不使用别名

第三,在t.column1、t.column2中选择“smith”,与外部t表中的COL进行比较(如果不需要)。您可以在外部选择中执行此操作。换言之,你可以把终端paren移到和“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)

我对选择IFa.column1='smith',a.column2,a.column1感到困惑。我实际上想做的是,如果在第1列或第2列中有一行有“smith”,那么不要选择该列,而是选择与表1中的列相反的列。如果你看到第一篇文章,你可以再次看到表格结构和我的问题。希望你能帮我解决这个问题。谢谢-kaash1 1分钟ago@moustafa:选择与表1相反的列是什么意思?请看我原来帖子中的表1和表2。我想构建一个类似这样的查询:我想从表1中选择列1或列2中有smith的所有行。如果第1列中有smith,则从第2列中选择值;如果第2列中有smith,则在该行的第1列中选择值,然后从表2中选择表2中包含该值的所有行(在表2中的第1列或第2列中),我们从下表1中选择答案得到的结果表明,即使在被问及这个问题时,这个问题似乎也过于宽泛,因此,现在搁置这个问题是有意义的。