有什麼辦法可以使以下工作成功?在CASE中使用從另一個SELECT中獲取的字段
SELECT
(SELECT COUNT(foo) FROM table2 WHERE table1.id = table2.id) AS foos
CASE
WHEN foos <= 0 THEN 0
WHEN foos > 0 THEN 1
END
AS isFoos
FROM table1
我得到它的工作的唯一辦法是這樣的:
SELECT
(SELECT COUNT(foo) FROM table2 WHERE table1.id = table2.id) AS foos
CASE
WHEN (SELECT COUNT(foo) FROM table2 WHERE table1.id = table2.id) <= 0 THEN 0
WHEN (SELECT COUNT(foo) FROM table2 WHERE table1.id = table2.id) > 0 THEN 1
END
AS isFoos
FROM table1
它看起來絕對可怕。
請注意,該示例沒有描述我有問題的SQL查詢,它描述了我想要從查詢中刪除的語法。
謝謝:)
編輯:修正了SQL以更好地解釋問題。
編輯2:這是小提琴,我希望它有幫助。
http://sqlfiddle.com/#!2/18a45d/2
小提琴包含產品和代理產品。產品可以製成多條生產線,生產線可以生產多種產品。
pr_connected顯示應與產品一起使用的行數,SELECT計數顯示實際使用產品的行數。
與我一起工作的db存在一些缺陷,並且由於寫入的代碼量太多而無法修復。
這樣做,謝謝! :) –
不客氣@TeroHeiskanen。很高興有幫助。快樂編碼和上帝保佑。 – Edper
我在想我的原始解決方案(每種情況下的SELECT)和解決方案之間是否存在任何性能差異?只要表現良好,我不介意SQL查詢的外觀。 –