gpt4 book ai didi

MYSQL Subselect in where子句

转载 作者:搜寻专家 更新时间:2023-10-30 20:30:31 27 4
gpt4 key购买 nike

我正在为这种简单的和平代码而伤脑筋,它不想工作,而且我想不出任何其他解决方案...

你能帮忙让它工作吗?

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:我现在正在寻找某种消极的加入。我认为这可以,但我不知道如何使用它。同时进行一些研究...

最佳答案

尝试:

SELECT c.chart FROM chart c
LEFT JOIN
( SELECT cn.chart FROM chart cn
JOIN charts cs ON cn.chart = cs.chart
JOIN users u ON u.user_id = cs.UID
WHERE user_ip = 2130706433 ) charts_localhost
ON c.chart = charts_localhost.chart
WHERE charts_localhost.chart IS NULL

请注意,使用 INET_NTOA(user_ip)='127.0.0.1' 会更好

user_ip = 2130706433 这是等效的,但索引友好。

关于MYSQL Subselect in where子句,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10088524/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com