我想通過查詢呈三角了一定的效果加入?的MySQL與IF條件
14
A
回答
21
SELECT * FROM users
LEFT JOIN private AS details ON users.id = details.user_id
WHERE users.id = 1 AND users.type = 1
UNION
SELECT * FROM users
LEFT JOIN company AS details ON users.id = details.user_id
WHERE users.id = 1 AND users.type != 1
我認爲這是你正在嘗試做的,不是嗎?如您現在所說的列數不同,您需要指定列(例如,列)。
SELECT 'private' AS detailType, users.*, col1, col2, col3, '' FROM users
LEFT JOIN private AS details ON users.id = details.user_id
WHERE users.id = 1 AND users.type = 1
UNION
SELECT 'company', users.*, col1, '', '', col4 FROM users
LEFT JOIN company AS details ON users.id = details.user_id
WHERE users.id = 1 AND users.type != 1
在這個例子中,私人擁有列COL1,COL2和COL3,同時公司擁有col1和COL4,但你希望他們所有。
6
SELECT
users.*,
details.info,
CASE users.type WHEN '1' THEN 'private' ELSE 'company' END AS user_type
FROM
users
INNER JOIN (
SELECT user_id, info FROM private
UNION
SELECT user_id, info FROM company
) AS details ON details.user_id = users.id
編輯:回答(問題誤解)的原始版本:
SELECT
*,
CASE type WHEN '1' THEN 'private' ELSE 'company' END AS details
FROM
users
WHERE
users.id = 1
15
我相信這已經解決了,但對於有類似問題的人。
您也可以嘗試將多個左聯接,以獲取所有數據
SELECT *, IF (users.type = 1, p.name, c.name) AS name FROM users
LEFT JOIN private AS p ON (users.type = 1 AND users.id = p.user_id)
LEFT JOIN company AS c ON (users.type != 1 AND users.id = c.user_id)
相關問題
- 1. MySQL的 - 連接表與IF條件
- 2. 與IF條件的MySQL查詢
- 3. 與if條件
- 4. MySQL數據庫查詢與if條件
- 5. mysql-php計數與if條件
- 6. MySQL的基於IF條件
- 7. MySQL UPDATE多個IF條件
- 8. mysql,在if條件中使用if條件的結果如果條件
- 9. MySQL的:與條件
- 10. IF式與多個條件
- 11. Laravel收集與if條件
- 12. 紅寶石軌道 - 內聯條件與if,elseif&if條件
- 13. MySQL的if語句有條件加入
- 14. 帶`IF`條件的MySQL`UPDATE`語句
- 15. 帶IF條件的MYSQL求和查詢
- 16. MySQL的:如何使用IF條件ORDER
- 17. MySQL非常慢的查詢與WHERE IF條件
- 18. MySQL的:單柱SUM(IF(條件A,B))與穆蒂列求和()
- 19. MySQL的非唯一值JOIN與IF條件
- 20. MySQL的:IF與SUM
- 21. 轉換PHP條件語句到MySQL的if-then條件語句
- 22. Mysql group_contact與條件
- 23. Mysql查詢IF條件和組
- 24. MySQL IF條件在計算字段
- 25. AngularJS與if條件之和的總和
- 26. mysql存儲過程與if條件給出錯誤
- 27. Mysql的約束與條件
- 28. 插入與MySQL的條件
- 29. 'if'條件後的'{'
- 30. PIG if條件
我不知道爲什麼現在我得到 #1222 - 如果我只使用代碼的一部分,即使用的SELECT語句具有不同數量的列 – plugowski 2010-05-05 08:17:35
。 SELECT * FROM用戶 LEFT JOIN私有AS users.id = details.user_id WHERE users.id = 1 AND users.type = 1 細節,但如果我使用UNION我已經得到錯誤#1222 – plugowski 2010-05-05 08:24:28
如果您在兩個表(私人和公司)中有不同數量的列,那麼您需要在SELECT中指定相同數量的列。您可以使用NULL,''或任何您想要的填充空白。 – Cez 2010-05-05 08:41:34