我对这种简单的代码和平感到头疼,它不想工作,而且我想不出任何其他解决方案......
你能帮忙让它工作吗?
SELECT chart FROM chart WHERE (select count(user_id) FROM users join charts ON
user_id=charts.UID and charts.chart=chart WHERE INET_NTOA(user_ip)='127.0.0.1')=0;
以下列涉及 3 个表:
chart(
chart int(5)
);
charts(
UID int(11),
chart int(5)
);
`users` (
`user_id` int(11),
`user_ip` int(10)
);
关键是第一次选择的“图表”列应该传递给子查询到charts.chart=chart,但子查询最终会与自身进行比较,即chart=chart - 总是正确的。
我知道它不会那样工作......但我真的想不出任何其他方式。我想做的事情有什么办法吗?
编辑1:基本上我需要一个反向选择:
select chart.chart from chart join charts on chart.chart=charts.chart join users
on user_id=charts.UID and INET_NTOA(user_ip)='127.0.0.1';
此查询返回由用户使用给定 ip 标记的图表,例如:1、4、5、9。但我需要选择未标记的图表,即:2、3、6、7、8、10等等...
编辑2:我现在正在寻找某种否定加入。我认为这可以,但我不知道如何使用它。同时做一些研究...