Во втором запросе это:
Trips.carid=Cars.cid and CARS.cid = carId
... будет рассматриваться как это:
Trips.carid = Cars.cid AND Cars.cid = Trips.carid
... что, конечно, так же, как это:
Trips.carid = Cars.cid
Другими словами, появление carId
в SQL обрабатывается как столбец carid
в таблице Trips
, а не как переменная C # carId
, как вы, возможно, ожидаете. Следовательно, единственное семантическое различие между двумя запросами состоит в том, что первый имеет следующее:
and Cars.cid IN ('1','2','3','4','5','6')
... чего нет у второго, следовательно, первый запрос возвращает меньше строк, поскольку должно существовать Cars.cid
значений, отличных от значений от 1 до 6 включительно.