我想通过查询呈三角了一定的效果加入?的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