我想要這樣的東西,不知道我的語法是否正確。 我將用php執行此操作。MySQL在一行內選擇多行
SELECT
a.column1,
a.column2,
b.column1,
c.column1,
IF a.column3 NOT NULL
THEN (
SELECT c.column1, c.column2, c.column3, d.column1
FROM table_d d
INNER JOIN table_c c
ON d.column1 = c.column1 AND c.column4 = 1
WHERE d.column2 = a.column3
);
END IF;
FROM table_a a
INNER JOIN table_b b
ON a.column1 = b.column1 AND b.column2 = 1
INNER JOIN table_c c
ON a.column1 = c.column1 AND c.column2 = 1
WHERE
a.column1 = 1000
AND b.column3 = 1
AND c.column3 = 0
ORDER BY
a.column1 ASC
所以輸出會是這樣的:
這將是確定的,如果它與第一幾列的相同數據的多個行。事情是這樣的:
灰色地帶是從外SELECT和白色區域是從內SELECT
注意,外表面和內SELECT語句table_c。如果沒有IF聲明,我可以這樣做嗎?
SELECT
a.column1,
a.column2,
b.column1,
c.column1,
cc.column1,
cc.column2,
cc.column3,
d.column1
FROM table_a a
INNER JOIN table_b b
ON a.column1 = b.column1 AND b.column2 = 1
INNER JOIN table_c c
ON a.column1 = c.column1 AND c.column2 = 1
LEFT JOIN table_d d
ON a.column3 = d.column2
INNER JOIN table_c cc
ON d.column1 = cc.column1 AND cc.column4 = 1
WHERE
a.column1 = 1000
AND b.column3 = 1
AND c.column3 = 0
ORDER BY
a.column1 ASC
它有點感覺不對我。 如果我使用fetch_assoc
會怎麼樣? 它甚至有可能在一個查詢中做到這一點?
可以。您將需要一些別名來避免通過索引獲取它們。 'c.column1 AS c_col1'中的別名爲 – Vatev
?喜歡這個?所以如果我這樣做第二個代碼段將工作? – yukari
無論你需要別名,它都可以工作,所以你可以使用'fetch_assoc'來獲得所有的字段。 – Vatev