[英]Simplifying Query String by re-using the derived fields column names in MYSQL
我們是否仍可以通過使用派生列作為另一個過程的輸入來簡化此查詢
$query = "SELECT table1.id,
COUNT(DISTINCT arr1.element) AS Arr1,
COUNT(DISTINCT arr2.element) AS Arr2,
COUNT(DISTINCT arr1.element) +
COUNT(DISTINCT arr2.element) AS tot,
(COUNT(DISTINCT arr1.element)/(COUNT(DISTINCT arr1.element)+COUNT(DISTINCT arr2.element)))*col3 AS c31,
(COUNT(DISTINCT arr2.element)/(COUNT(DISTINCT arr1.element)+COUNT(DISTINCT arr2.element)))*col3 AS c32
FROM table1
WHERE col2 = 'x'"
像這樣的東西
$query = "SELECT table1.id,
COUNT(DISTINCT arr1.element) AS Arr1,
COUNT(DISTINCT arr2.element) AS Arr2,
COUNT(DISTINCT arr1.element) +
COUNT(DISTINCT arr2.element) AS tot,
(Arr1/tot)*col3 AS c31,
(Arr2/tot)*col3 AS c32
FROM table1
WHERE col2 = 'x'"
謝謝
您可以嘗試以下方法:
$query = "
SELECT tab.id, tab.Arr1, tab.Arr2, tab.tot, (tab.Arr1/tab.tot) as c31, (tab.Arr2/tab.tot) as c32
from (
SELECT table1.id,
COUNT(DISTINCT arr1.element) AS Arr1,
COUNT(DISTINCT arr2.element) AS Arr2,
COUNT(DISTINCT arr1.element) +
COUNT(DISTINCT arr2.element) AS tot
FROM table1
WHERE col2 = 'x'
) as 'tab' "
嘗試這個:
SELECT id, Arr1, Arr2, (Arr1 + Arr2) tot, ((Arr1 / (Arr1 + Arr2)) * col3) c31, ((Arr2 / (Arr1 + Arr2)) * col3) c32
FROM (SELECT table1.id, COUNT(DISTINCT arr1.element) AS Arr1, COUNT(DISTINCT arr2.element) AS Arr2, col3
FROM table1 WHERE col2 = 'x') AS A
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.