mysql查询重复结果

mysql查询重复结果,mysql,sql,Mysql,Sql,我有这个疑问。如果徽标为空或按钮为空或vanitylogo为空,我需要选择行。这似乎是工作,但,打印多行相同的中间。如何解决这个问题 SELECT fmm.mid, fmm.name , fmn.mnname, fmm.button, fmm.logo, fmm.vanitylogo FROM X fmm , Y fmn WHERE fmm.`button` = '' OR fmm.`button` = 'NUL

我有这个疑问。如果徽标为空或按钮为空或vanitylogo为空,我需要选择行。这似乎是工作,但,打印多行相同的中间。如何解决这个问题

SELECT fmm.mid,
       fmm.name ,
       fmn.mnname,
       fmm.button,
       fmm.logo,
       fmm.vanitylogo
FROM X fmm ,
     Y fmn
WHERE fmm.`button` = ''
  OR fmm.`button` = 'NULL'
  OR fmm.`button` = 'None'
  OR fmm.`logo` = ''
  OR fmm.`logo` = 'NULL'
  OR fmm.`logo` = 'None'
  OR fmm.`vanitylogo` = ''
  OR fmm.`vanitylogo` = 'NULL'
  OR fmm.`vanitylogo` IS NULL
  AND fmm.mid=fmn.nid
  AND fmm.status='active'
  AND fmm.xyz_status='active'

您正在选择表“Y fmn”。对于Y中的每一行,结果都将重复。您需要一种聚合结果的方法,可能是使用分组方式

SELECT fmm.mid,
       fmm.name ,
       fmn.mnname,
       fmm.button,
       fmm.logo,
       fmm.vanitylogo
FROM X fmm ,
     Y fmn
WHERE fmm.`button` = ''
  OR fmm.`button` = 'NULL'
  OR fmm.`button` = 'None'
  OR fmm.`logo` = ''
  OR fmm.`logo` = 'NULL'
  OR fmm.`logo` = 'None'
  OR fmm.`vanitylogo` = ''
  OR fmm.`vanitylogo` = 'NULL'
  OR fmm.`vanitylogo` IS NULL
  AND fmm.mid=fmn.nid
  AND fmm.status='active'
  AND fmm.xyz_status='active'
group by fmm.mid,
       fmm.name ,
       fmn.mnname,
       fmm.button,
       fmm.logo,
       fmm.vanitylogo

您正在选择表“Y fmn”。对于Y中的每一行,结果都将重复。您需要一种聚合结果的方法,可能是使用分组方式

SELECT fmm.mid,
       fmm.name ,
       fmn.mnname,
       fmm.button,
       fmm.logo,
       fmm.vanitylogo
FROM X fmm ,
     Y fmn
WHERE fmm.`button` = ''
  OR fmm.`button` = 'NULL'
  OR fmm.`button` = 'None'
  OR fmm.`logo` = ''
  OR fmm.`logo` = 'NULL'
  OR fmm.`logo` = 'None'
  OR fmm.`vanitylogo` = ''
  OR fmm.`vanitylogo` = 'NULL'
  OR fmm.`vanitylogo` IS NULL
  AND fmm.mid=fmn.nid
  AND fmm.status='active'
  AND fmm.xyz_status='active'
group by fmm.mid,
       fmm.name ,
       fmn.mnname,
       fmm.button,
       fmm.logo,
       fmm.vanitylogo

您的查询有两个主要问题:

  • 您没有正确地将您的
    条件括起来
  • 表之间没有连接条件,导致“交叉连接”
  • 试试这个:

    SELECT fmm.mid,
           fmm.name ,
           fmn.mnname,
           fmm.button,
           fmm.logo,
           fmm.vanitylogo
    FROM X fmm
    JOIN Y fmn ON fmn.some_column = X.some_column -- FIX THIS
    WHERE (fmm.`button` in ('', 'NULL', 'None')
      OR fmm.`logo` IN ('', 'NULL', 'None')
      OR fmm.`vanitylogo` IN ('', 'NULL')
      OR fmm.`vanitylogo` IS NULL)
      AND fmm.mid=fmn.nid
      AND fmm.status='active'
      AND fmm.xyz_status='active'
    
    您必须用适当的列名填写“修复此”:行


    关于ORs,我将一些捆绑到IN()条件中,并将批次括起来。

    您的查询有两个主要问题:

  • 您没有正确地将您的
    条件括起来
  • 表之间没有连接条件,导致“交叉连接”
  • 试试这个:

    SELECT fmm.mid,
           fmm.name ,
           fmn.mnname,
           fmm.button,
           fmm.logo,
           fmm.vanitylogo
    FROM X fmm
    JOIN Y fmn ON fmn.some_column = X.some_column -- FIX THIS
    WHERE (fmm.`button` in ('', 'NULL', 'None')
      OR fmm.`logo` IN ('', 'NULL', 'None')
      OR fmm.`vanitylogo` IN ('', 'NULL')
      OR fmm.`vanitylogo` IS NULL)
      AND fmm.mid=fmn.nid
      AND fmm.status='active'
      AND fmm.xyz_status='active'
    
    您必须用适当的列名填写“修复此”:行


    关于ORs,我将一些捆绑到IN()条件中,并将其括起来。

    在旁注中,我建议您查看此网页代码完整2,“变量名称之间心理距离的示例”在旁注中,我建议您查看此网页代码完整2,“变量名之间心理距离的示例”,但这是选择结果,其中vanitylogo为NULL,不选择其他列为NULL的其他行,但这是选择结果,其中vanitylogo为NULL,不选择其他列为NULL的其他行