Как избежать "AS" для именованных таблиц в подзапросе?
Я получил несколько рабочих ответов на предыдущий вопрос MySQL год назад.
Я возьму фрагмент из двух ответов и отмечу их, а не копирую весь запрос и занимаю место. (Если я вам не нужен)
Оба ответа сработали.
Ответ 1
Первый использованный ответ AS
перед псевдонимом именованной таблицы, AS highestcost
и AS lowestcost
...
...
FROM vendor
inner join vendorparts on vendor.id = vendorparts.vendorid
inner join part on vendorparts.partid = part.id
inner join product on product.partid = part.id
INNER JOIN (SELECT vendorparts.partid,
Max(vendorparts.lastcost) AS Highestcost
FROM vendorparts
GROUP BY vendorparts.partid) AS highestcost
ON part.id = highestcost.partid
INNER JOIN (SELECT vendorparts.partid,
Min(vendorparts.lastcost) AS Lowestcost
FROM vendorparts
GROUP BY vendorparts.partid) AS lowestcost
ON part.id = lowestcost.partid
WHERE vendorparts.lastcost <> 0
Ответ 2
Во втором ответе не использовались AS
, вместо этого они просто добавили дополнительный интервал между закрывающей скобкой и ее псевдонимом. Они также переименовали таблицы t1
и t2
, чтобы избежать двусмысленности с любыми именами столбцов, которые я обязательно начну делать, так как это намного меньше беспорядка.
...
FROM vendor
INNER JOIN vendorparts on vendor.id = vendorparts.vendorid
INNER JOIN part on vendorparts.partid = part.id and
INNER JOIN product on product.partid = part.id
INNER JOIN (SELECT vendorparts.partid,
Max(vendorparts.lastcost) AS Highestcost
FROM vendorparts
GROUP BY vendorparts.partid) t1
ON part.id = t1.partid
INNER JOIN (SELECT vendorparts.partid,
Min(vendorparts.lastcost) AS Lowestcost
FROM vendorparts
GROUP BY vendorparts.partid) t2
ON part.id = t2.partid
WHERE vendorparts.lastcost <> 0
Почему?
Оба ответа сработали, Второй ответ указан как " Избегайте использования " AS
, но почему?
Я некоторое время использовал AS
для производных имен таблиц и не сталкивался с какими-либо проблемами. И сами MySQL показывают использование AS
в своей документации по производным таблицам, которая здесь .
Все сводится к личным предпочтениям? Лучшая производительность? Если это имеет значение, второй ответ был предоставлен пользователем с более чем 80 000 репутацией и одним вопросом. Я полагаю, он прав. Может быть, я неправильно читаю документацию по MySQL.