2017-10-05 41 views
0

我的左表的数据是“消息”完整的数据OG留下其他表,然后加入连接

id  advid  seller_id  purchase _id  delete_status 

15  93   28   19     yes 
22  134   34   19     yes 
25  168   15   19     No 
17  130   19   2     yes 
24  134   34   6     No 

我的右表中的数据是“DeleteMessage可以”

id addid  sessionid  messageid  
1  93   19   15 
2  134   34   22 
3  93   28   15 
4  130   19   17 

我正在插入ADVID,ID和活动人员(卖方/买方)在session中删除表

现在我想要消息表中的数据,其销售者/购买ID不作为会话标识输入到删除表中

我使用左加入,但它不是从左表保存我的数据

我的查询是

select * from message 
left join deletetable 
on message.id = deletetable.messageid 
where sessionid !='34' 
AND (purchase_id='34' OR seller_id='34') 

根据我的愿望这个查询应该给我留言表的条目没有24但没有什么是显示出来

+0

不,它是给我从左表的所有34条目 – ramii

回答

1
DROP TABLE IF EXISTS message; 

CREATE TABLE message 
(id INT NOT NULL PRIMARY KEY 
,seller_id INT NOT NULL 
,purchase_id INT NOT NULL 
); 

INSERT INTO message VALUES 
(15,28,19), 
(22,34,19), 
(25,15,19), 
(17,19,2), 
(24,34,6); 

DROP TABLE IF EXISTS deletemessage; 

CREATE TABLE deletemessage 
(id INT NOT NULL AUTO_INCREMENT PRIMARY KEY 
,sessionid INT NOT NULL 
,messageid INT NOT NULL 
); 

INSERT INTO deletemessage VALUES 
(1,19,15), 
(2,34,22), 
(3,28,15), 
(4,19,17); 

SELECT x.* 
    FROM message x 
    LEFT 
    JOIN deletemessage y 
    ON y.messageid = x.id 
    AND y.sessionid = 34 
WHERE 34 IN (x.seller_id,x.purchase_id) 
    AND y.id IS NULL; 
+----+-----------+-------------+ 
| id | seller_id | purchase_id | 
+----+-----------+-------------+ 
| 24 |  34 |   6 | 
+----+-----------+-------------+ 
+0

谢谢你是完美的 – ramii

0

希望我正确地读你的问题,但是这看起来让你要求的结果:

SELECT m.id, m.advid, m.seller_id, m.purchase_id, m.delete_status 
    FROM message m 
LEFT JOIN deletetable d ON m.id = d.messageid 
WHERE d.messageid IS NULL 
AND (purchase_id = '34' OR seller_id = '34') 

这将会从message没有在​​3210的输入,同时在seller_idpurchase_id是所有值使用上述从您的样品“34”

结果:

| *id* | *advid* | *seller_id* | *purchase_id* | *delete_status* | 
+------+---------+-------------+---------------+-----------------+ 
| 24 | 134  | 34   | 6    | No    | 

注意:你已经用撇号包围你的purchase_idseller_id,即'34',所以我认为这是一个字符串字段而不是整数。如果它是一个Integer字段,则可以删除它们 - 它们不是必需的,它会使查询速度稍慢。

+0

我看不到会话ID在这里 – Strawberry

相关问题