2017-01-16 337 views
0

選擇,而當我執行此查詢第一個字母大寫小寫

SELECT b.booking_id, bp.person_id, b.start_date AS start_date 
FROM Bookings b 
LEFT OUTER 
JOIN (
SELECT Booking_id, Person_id 
FROM Booking_participants) AS bp ON bp.Booking_id = b.Booking_id 
WHERE b.Product_id = '933' AND b.end_date > '2017-01-16 16:50:52' AND b.end_date <= '2017-01-17' 
ORDER BY b.end_date 

它返回一個服務器

enter image description here

以下而另一臺服務器上,將返回

enter image description here

爲什麼它在一臺服務器上person_id,另一臺是Person_id

Booking_participants enter image description here

Bookings enter image description here

在兩臺服務器上SHOW VARIABLES LIKE 'lower_case_table_names' 返回0

+0

不確定的問題..但你可以定義你自己的別名,並嘗試?由於[lower_case_table_names](http://dev.mysql.com/doc/refman/5.7/en/server-system-variables.html#sysvar_lower_case_table_names)和大小寫不敏感的文件系統,您在聯合聲明 – SMA

+0

中擁有'Person_id'。 –

+0

@ÁlvaroGonzález這些只對'表'名稱而不是'列'名稱? – Efekan

回答

1

這很可能是你的第二個服務器上使用您的數據定義法術你列的名稱Person_id帶有大寫名字。在第一臺服務器上,似乎可能以小寫拼寫。

MySQL列名可以以大小寫混合的方式存儲和呈現,但始終以不區分大小寫的方式處理。 http://dev.mysql.com/doc/refman/5.7/en/identifier-case-sensitivity.html

+0

它會工作,如果我試過:'ALTER TABLE Booking_participants \t CHANGE COLUMN Person_id person_id INT(11)NOT NULL AFTER Booking_id; '或者我需要專門刪除表並重新創建它以確保它第一次將其保存爲小寫 – Efekan