我设法从保存我最新帖子的表中选择
但我需要在选择中有双重条件
这是我的代码:
$sql_query = "SELECT b.*,u.username AS MY_Sender
FROM TABLE_users u,TABLE_blogs b
Where b.reciever = '0' AND u.user_id = b.sender
UNION
SELECT b.*,u.username AS MY_reciever
FROM TABLE_users u,TABLE_blogs b
Where b.reciever != '0' AND u.user_id = b.reciever
ORDER BY bid DESC
LIMIT 0,7 ";
但 MY_reciever 为空且空
在使用UNION这个需求时我错了吗?!
答案 0 :(得分:2)
SELECT b.*,u.username AS MY_Sender, NULL AS MY_reciever
FROM TABLE_users u,TABLE_blogs b
Where b.reciever = '0' AND u.user_id = b.sender
UNION
SELECT b.*, NULL AS MY_Sender, u.username AS MY_reciever
FROM TABLE_users u,TABLE_blogs b
Where b.reciever != '0' AND u.user_id = b.reciever
答案 1 :(得分:1)
联合部分的列必须具有相同的名称。 尝试:
SELECT b.*,
u.username AS MY_User
FROM TABLE_users u,
TABLE_blogs b
WHERE b.reciever = '0'
AND u.user_id = b.sender
UNION
SELECT b.*,
u.username AS MY_User
FROM TABLE_users u,
TABLE_blogs b
WHERE b.reciever != '0'
AND u.user_id = b.reciever
ORDER BY bid DESC
LIMIT 0,7
如果您需要区分UNION的哪一部分已经返回,请返回一个额外的列:
SELECT b.*,
u.username AS MY_User.
'Sender' AS MyType
FROM TABLE_users u,
TABLE_blogs b
WHERE b.reciever = '0'
AND u.user_id = b.sender
UNION
SELECT b.*,
u.username AS MY_User.
'Recipient' AS MyType
FROM TABLE_users u,
TABLE_blogs b
WHERE b.reciever != '0'
AND u.user_id = b.reciever
ORDER BY bid DESC
LIMIT 0,7
答案 2 :(得分:1)
@Mac Taylor
嘿,伙计,确定你理解我,告诉你我需要在你写的这句话中添加一个条件,AS My_Real_Sender ..因为你可能知道你写的这句话很好找到Reciver(MY_Type)而不是帖子的发件人
你的意思是这样的吗?
SELECT b.*,
u.username AS MY_Sender.
NULL as MY_Recipient,
'Sender' AS MyType
FROM TABLE_users u,
TABLE_blogs b
WHERE b.reciever = '0'
AND u.user_id = b.sender
UNION
SELECT b.*,
u1.username AS MY_Sender.
u2.username AS MY_Recipient.
'Recipient' AS MyType
FROM TABLE_users u1,
TABLE_users u2,
TABLE_blogs b
WHERE b.reciever != '0'
AND u1.user_id = b.reciever
AND u2.user_id = b.sender
ORDER BY bid DESC
LIMIT 0,7