AS結合我有一個AS-有關MySQL的問題,特別是在與具有結合:與MySQL的困難有具有
這不工作(介意 「(250)AS」,第二行):
SELECT A.uid, A.name, A.height, A.width,
(250) AS squaresize
FROM tx_fach_domain_model_professional A,
tx_fach_domain_model_category B,
tx_fach_professional_category_mm MM
WHERE MM.uid_local = A.uid and
MM.uid_foreign = 2
HAVING squaresize > 20
ORDER BY squaresize LIMIT 0 , 4;
這確實不工作:
SELECT A.uid, A.name, A.height, A.width,
(A.height * A.width) AS squaresize
FROM tx_fach_domain_model_professional A,
tx_fach_domain_model_category B,
tx_fach_professional_category_mm MM
WHERE MM.uid_local = A.uid and
MM.uid_foreign = 2
HAVING squaresize > 20
ORDER BY squaresize LIMIT 0 , 4;
奇怪的是,它並沒有給我任何錯誤,但它只是返回4個相同的行/記錄,而不是4個不同的行。
是很笨這裏..
以上是我真正的問題的簡化版本..如果我在我上面的例子有(200),實際上,我試圖測量經度之間的距離價值和緯度值:
SELECT A.uid, A.name, A.latitute, A.longitute,
(6371 * acos (cos (radians(52.52000659999999))
* cos(radians(A.latitute)) * cos(radians(A.longitute) -
radians(13.404953999999975)) + sin (radians(52.52000659999999)) * sin(
radians(A.latitute)))) AS distance
FROM tx_fach_domain_model_professional A,
tx_fach_domain_model_category B,
tx_fach_professional_category_mm MM WHERE MM.uid_local = A.uid and
MM.uid_foreign = 2 HAVING distance < 20 ORDER BY distance LIMIT 0 , 4;
現在這個工作,只要我不使用具有距離< 20 ORDER BY距離。但只要我使用這些,我得到了4個同樣的結果,而不是預期的4 不同結果。
但是,在我的簡單例子中,我有完全相同的問題。
[解決方法]這是沒有的伎倆,並提供後的功能我需要什麼 - 如提出@AsConfused:
SELECT A.uid, A.name, A.latitute, A.longitute,
(6371 * acos (cos (radians(52.52000659999999))
* cos(radians(A.latitute)) * cos(radians(A.longitute)
radians(13.404953999999975)) + sin (radians(52.52000659999999)) *
sin(radians(A.latitute)))) AS distance
FROM tx_fach_domain_model_professional A JOIN
tx_fach_professional_category_mm MM
on MM.uid_local = A.uid and MM.uid_foreign = 2
HAVING distance < 20
ORDER BY distance LIMIT 0 , 4;
謝謝!
使用顯式連接,不從表1,表2 ... –
選擇是用於聚合函數條件擁有。與GROUP BY一起使用。 – jarlh
爲什麼不只是在哪裏(A.height * A.width)> 20'? – Daan