gpt4 book ai didi

mysql - mysql查询中的for循环功能

转载 作者:搜寻专家 更新时间:2023-10-30 23:11:23 24 4
gpt4 key购买 nike

这是MYSQL查询问题

首先,假设我们有

[ALL_MENU]

name
-----
pasta
pizza

人们下单了

ordered

customer name status
john pasta delivered
kim pasta delivered
john pizza delivered
john pasta delivered

我想遍历已点餐的 table ,找到点了所有菜单的人

在此示例中,kim 只点了意大利面,因此不应包括在内但是约翰点了意大利面和披萨,所以它应该包含在结果中。

是否有任何类型的查询可以执行“For 循环”功能?

谢谢

(ps,现在我只允许使用

mysql的一些基本功能命令

分组依据,创建 View ,存在,全部,不存在,唯一等等)

============================================= ==========================

好的,来自答案当 (customer,name) 是主键时,所有菜单事物的计数都是有效的但是,如果我将数据列和主键添加为 (customer,name,data) 会怎么样

   customer name status              date
john pasta delivered 3/4
kim pasta delivered 3/5
john pasta delivered 3/5

这是我新建的专栏约翰点了唯一有两个不同日期的意大利面,但约翰的订单数为 2。

因此计数方法不适用于此

我们如何解决这个问题?

最佳答案

for 循环的功能是 cursor . (仅供引用,大多数 DBMS 都有这样的结构。)

但是当一个普通的旧查询就可以很好地工作时,永远不要使用游标。

这是一种可能的解决方案:

SELECT customer
FROM ordered
GROUP BY customer
HAVING COUNT(DISTINCT name) = (SELECT COUNT(*) FROM all_menu)

(假设 ordered 中的所有名称都在 all_menus 中找到,例如,有外键。如果没有,则必须添加 JOIN all_menu ON ordered.name = all_menu.nameFROM 子句中。)

编辑:仅“简单”(!) 命令:

SELECT customer
FROM ordered o1
WHERE NOT EXISTS (
SELECT * FROM all_menu
WHERE name NOT IN (SELECT name FROM ordered o2 WHERE o1.customer = o2.customer)
)

关于mysql - mysql查询中的for循环功能,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/19672654/

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