Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/mysql/58.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Mysql Transact-SQL尝试使用内部联接和“Like”约束避免重复_Mysql - Fatal编程技术网

Mysql Transact-SQL尝试使用内部联接和“Like”约束避免重复

Mysql Transact-SQL尝试使用内部联接和“Like”约束避免重复,mysql,Mysql,这样显示类似的内容,它复制结果 如果删除这部分代码,它就可以正常工作 SELECT numSerie, nomVehicule,model,AnneeModel FROM Vehicule,Marque where Vehicule.idMarque = Marque.idMarque and Vehicule.numSerie LIKE "%" OR Marque.nomVehicule LIKE "%" 您的WHERE子句需要做一些工作。看看布尔逻辑。如果不将条件括在括号中,

这样显示类似的内容,它复制结果

如果删除这部分代码,它就可以正常工作

    SELECT numSerie, nomVehicule,model,AnneeModel 
FROM Vehicule,Marque where Vehicule.idMarque = Marque.idMarque and Vehicule.numSerie 
LIKE "%" OR Marque.nomVehicule LIKE "%" 

您的WHERE子句需要做一些工作。看看布尔逻辑。如果不将条件括在括号中,它将从左到右计算布尔运算符

切换到ANSI-92 SQL表示法将立即解决问题。ANSI-92表示法已经有25年的历史了,虽然数据库引擎仍然可以使用较旧的联接表示法运行查询,但使用ANSI-92联接表示法可以完全避免这个问题

 OR Marque.nomVehicule LIKE "%"
或者更好,用ANSI-92表示法:

 FROM Vehicule,Marque 
WHERE (Vehicule.idMarque = Marque.idMarque) 
  AND ((Vehicule.numSerie LIKE "%") OR (Marque.nomVehicule LIKE "%"))

那么为什么不删除这一部分呢?这对于我的应用程序来说是必要的。标题说关于Transact-SQL的问题,但它被MySQL标记了。。。问题是什么?尝试避免重复要避免重复,只需使用DISTINCDISTINCTROW关键字或GROUP BY子句。
 FROM Vehicule
      JOIN Marque ON (Vehicule.idMarque = Marque.idMarque)
WHERE Vehicule.numSerie LIKE "%" OR Marque.nomVehicule LIKE "%"