هل هذا الاستعلام MySQL لديه أي hotchas المخفي؟

StackOverflow https://stackoverflow.com/questions/2200165

  •  18-09-2019
  •  | 
  •  

سؤال

آمل أن يكون هذا ليس سؤالا منفرجا بشكل رهيب. لاحظت أن MySQL ستخبرني الرجوع إلى حقل "MNTH" في مجموعتي والنظام. هذا ليس هو الحال في كل محرك DB لقد عملت معه. هل يمكن لأي شخص كونه أن هذا نهج موافق؟

SELECT DATE_FORMAT(FROM_UNIXTIME(`swauditlogs`.`dateline`),'%Y-%m') AS Mnth, Count(`swauditlogs`.`ticketid`) AS Count
FROM swauditlogs LEFT JOIN swtickets ON swauditlogs.ticketid = swtickets.ticketid
WHERE swauditlogs.actionmsg Like 'Ticket status changed from:%to: Closed'
GROUP BY Mnth
ORDER BY Mnth DESC
هل كانت مفيدة؟

المحلول

موافق. من http://dev.mysql.com/doc/refman/5.0/en/select.html.:

يمكن إعطاء SELECT_EXPR اسم مستعار باستخدام alias_name. يستخدم الاسم المستعار باسم عمود التعبير ويمكن استخدامه في المجموعة حسب أو ترتيبها أو وجود بنود.

أنا لا أحب ذلك مثل البند على الرغم من. ليس هناك عمود آخر يمكنك اختبار بدلا من الاضطرار إلى أداء مثل على سلسلة؟

نصائح أخرى

هذا مقبول في MySQL:

انظر هنا: http://dev.mysql.com/doc/refman/5.1/en/group-by-hidden-columns.html.

لاحظ أنه إذا كنت تحاول متابعة SQL القياسية، فلن تتمكن من استخدام التعبيرات في Group by Clauses. يمكنك العمل حول هذا القيد باستخدام اسم مستعار للتعبير ...

... مما يعني أنه يمكنك استخدام التعبيرات مع MySQL.

لا أعرف عن أي داخلي MySQL، لكنني استخدمت استعلام مماثل في نظام الإنتاج لدينا، وحتى اليوم لم يحطأ الاستعلام حتى الآن. لذلك هذا ليس إجابتي HySQL Core Hacker، فقط ملاحظتي.

آه نسيت: الضمان تنويه: فقط لأنني أقول أنني لا أرى gotchas، لا يعني أنه لا يوجد شيء ؛-)

IMHO، الاستعلام يبدو بخير mysql.

لا يذكر SQL القياسي الإشارات إلى أسماء أسماء الأسماء المستعارة في العمود في جملة حيث يمكنك استخدام الاسم المستعار في المجموعة أو الترتيب حسب أو الحصول على بنود للإشارة إلى العمود.

http://dev.mysql.com/doc/refman/5.0/ar/problems-with-alias.html.

مرخصة بموجب: CC-BY-SA مع الإسناد
لا تنتمي إلى StackOverflow
scroll top