Transact SQL试图避免重复使用内连接和"喜欢"约束

时间:2017-12-23 11:22:47

标签: mysql

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

这个显示类似的东西,它重复了结果

result

如果删除这部分代码就可以了。

 OR Marque.nomVehicule LIKE "%"

result 2

1 个答案:

答案 0 :(得分:0)

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

切换到ANSI-92 SQL表示法可以立即解决问题。 ANSI-92表示法已有25年的历史,而数据库引擎仍使用较旧的连接符号运行查询,使用ANSI-92连接表示法可以完全避免此问题。

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

甚至更好,用ANSI-92表示法::

 FROM Vehicule
      JOIN Marque ON (Vehicule.idMarque = Marque.idMarque)
WHERE Vehicule.numSerie LIKE "%" OR Marque.nomVehicule LIKE "%"