请高手帮忙解决MSSQL联合查询问题
MSSQL:
SELECT mes.*,mes_type1.type1_name AS T1Name,mes_type1.visit_level FROM mes LEFT JOIN mes_type1 ON mes_type1.type1=mes.type1 LEFT JOIN webuser ON webuser.user_code=mes.op_first_code LEFT JOIN webuser_rel_group ON webuser_rel_group.user_id=webuser.id WHERE mes.subject!='' and( ( mes_type1.type1_name !='' ) )and( ( mes_type1.flag ='1' ) )and ( ( ( mes.column_id ='21' ) and ( mes_type1.column_id ='21' ) ) ) and ( ( webuser_rel_group.group_id ='1' ) or ( webuser_rel_group.group_id ='2' ) or ( webuser_rel_group.group_id ='3' ) ) ORDER BY mes.show_number DESC, mes.id DESC
会查出很多重复项。
MYSQL:
SELECT DISTINCT mes.*,mes_type1.type1_name AS T1Name,mes_type1.visit_level FROM mes LEFT JOIN mes_type1 ON mes_type1.type1=mes.type1 LEFT JOIN webuser ON webuser.user_code=mes.op_first_code LEFT JOIN webuser_rel_group ON webuser_rel_group.user_id=webuser.id WHERE mes.subject!='' and( ( mes_type1.type1_name !='' ) )and( ( mes_type1.flag ='1' ) )and ( ( ( mes.column_id ='21' ) and ( mes_type1.column_id ='21' ) ) ) and ( ( webuser_rel_group.group_id ='1' ) or ( webuser_rel_group.group_id ='2' ) or ( webuser_rel_group.group_id ='3' ) ) ORDER BY mes.show_number DESC, mes.id DESC
在MYSQL下使用DISTINCT就没有重复项。
在MSSQL此语句有错误:“不能以 DISTINCT 方式选择 text、ntext 或 image 数据类型。”
试了N种方式也不行。请高手帮帮忙,指点一下
答案:mysql 和 sql server的语法有差异, 解析distinct不同
SQL语句太长了, 表间的关系也不清楚
在确认没有重复项的情况下, 一般是你的条件关联少了
你可以从2个表连接开始逐渐增加表进行排查
其他:JOIN了这些表,可能哪个表里有重复记录,然后累加一下,可能会出现很多值啊
上一个:数据库高手帮忙--多字段(column )同时检索语法--mysql,mssql均可。
下一个:谁可以帮我还原一下mssql数据库 我不会弄