问题标签 [nested-select]
For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.
php - mySQL - 使用 JOIN 选择,还是嵌套选择(子选择)?
我正在尝试在 mySQL(和 PHP)中编写一个 SELECT,它将检索“图像”表中尚未被某个用户排名的所有行。
这些是我的桌子:
表:图像
表2:WhoAlreadyClickedImg(没有索引)
每次用户对图像进行排名时,都会更新表“Images”并在“WhoAlreadyClickedImg”表中添加一行。(此表没有索引)
例如,如果用户将图像索引 202 排名为“ok”,则 col“Rank_OK”将更新为 (+1),然后将在“WhoAlreadyClickedImg”表中添加一个新行:
图像索引:201 | UserWhoRankedIt:(使用的会话 id) | 排名给定:好的
我想构建一个不会向已经对其进行排名的用户两次显示相同图像的选择。
例如,如果我是用户“93”,则选择将带来的唯一图像是“203”
更新:
这是我正在使用的查询(@eamonn):
SELECT * FROM Images WHERE Index NOT IN (SELECT ImageIndex FROM WhoAlreadyClickedImg WHERE UserWhoRankedIt = 93);
但我收到一个错误:
您的 SQL 语法有错误;检查与您的 MySQL 服务器版本相对应的手册,以在第 1 行的“Index NOT IN (SELECT ImageIndex FROM WhoAlreadyClickedImg WHERE UserWhoRankedIt”附近使用正确的语法
我检查了我的系统:
存储引擎:InnoDB
MySQL数据库版本:5.5.33-29.3
两个表现在都有索引,int(11),定义为 PRIMARY,auto_increment
也许有人有想法?
mysql - 在匹配子字符串时将表 a 连接到表 b 效率低下......想法?
背景:
首先,我有一个模式,其中有一个名为patients
我关心的表,patient_id
并且alerts
(警报是一串字符,其中每个字符代表一些任意值/含义)。其次,每个“患者”都是一个组 [family] 的一部分,仅基于他们的 patient_id 上的前 6 位数字。此外,还有一些第三方依赖此数据库;我没有设计,也无法更改此架构/数据模型,也无法从 MySQL 迁移。
挑战:
现在,我需要找出患者有包含!
、@
、#
、%
、^
或&
符号的警报而他们的家庭成员没有的事件。我的第一个想法是收集所有具有包含这些符号的警报的患者,删除每个患者 ID 中的最后一位数字,然后按此值分组。现在我有一个(出于所有意图和目的)“group_ids”的列表。最后,我需要扩展列表以包含每个组的家庭成员及其各自的警报字符串。
这是我到目前为止所拥有的:
查询 #1:
Fiddle ~注意: fiddle 不是问题的准确表示,因为包含的表只有 28 条记录。
记录集:80,000 ~ 结果:2188 ~ 持续时间:14.321 秒 ~ 获取:0.00 秒 ~ 总计:14.321 秒
查询 #2:
Fiddle ~注意: fiddle 不是问题的准确表示,因为包含的表只有 28 条记录。
记录集:80,000 ~ 结果:2188 ~ 持续时间:4.259 秒 ~ 获取:5.663 秒 ~ 总计:9.992 秒
编辑:添加 name_first、name_last、alerts 和 order by 子句后,我发现此查询与第一个查询所用的时间完全相同。
问题:
我得到的列表是准确的,但是不仅需要额外的处理(我打算用 PHP 来做),而且需要 14 秒!
如果有人有更好的......或者至少可以指出一个更好、更有效的解决方案的方向,请赐教。提前致谢。
额外的信用:任何关于 PHP 算法的技巧,以解决给定数据的上述问题 - 忘记语义,只需一个公式即可。
sql - 使用 SQL 根据名称选择表中列的子集
我在 Postgres DB 中有一个表,其中有很多列,例如“id、name、a01、a02、a03、...、a20、b、c、d、e、f”。我想检查这些“aXX”列中的任何一个是否具有值“Y”。我知道简单的方法是:
我想知道是否有任何方法可以使用基于这些列名的循环或嵌套选择查询,因为它们具有模式,而不是在 WHERE 中单独对它们进行硬编码?
提前致谢。
mysql - 对来自多个表的结果进行分组
我有 6 个表:3 个用于有关动漫/漫画/ova/whatever 的一般数据,3 个用于它们的流派,这是一对一的关系
每当有人搜索流派以在一个查询中获取所有信息时,我都会尝试对结果进行分组
情况1:
案例2(优选):
我整天都在打我的头,我只能得到一张桌子的预期结果。我无法设法获得所有三合一查询的结果。
有任何想法吗?有人可以指出我正确的方向吗?(数据表有一些不常见的列,但我并不关心我是否得到空值,因为我在 js 中解析结果)
asp.net-mvc - 如何通过过滤 MVC 中的一个特定字段在列表中创建两个新字段?
我有一个 ViewModel 为:
另一方面,我想在视图中创建一个列表:
事实上,我想在两列中以不同的条件显示一个字段( @item.content.CON_VALUE)
。
首先,我使用这个查询,但它不能返回第一个@item.content.CON_VALUE
,我不能为一个字段应用两个条件(在两列中)。
你知道一个合适的解决方案吗?
mysql - 在实体框架查询中转换复杂的嵌套选择
我需要通过这个视图模型在视图中创建一个表:
但是创建新表的查询非常复杂。我在 MySQL 中使用了这个查询,使用它可以得到正确的结果。
但是,我必须在 MVC 中的 linq 或 EF 中转换此查询。
如何在实体框架查询中编写此查询?以及如何在视图中显示结果?
sql - SQL查询;如何仅在一行中的条目数大于另一行中的条目数时显示信息?
超级简化的代码:
所以问题是最后一点不起作用(我确定我完全做错了,这只是对如何做的一个猜测。)我想知道是否有人可以给我一些建议。
我要做的只是在特定字段中包含“CRED”的行数大于特定字段中包含“PUR”的行数的情况下返回所需的字段。(相同的字段,如果可以简化事情的话。)无论“CRED”或“PUR”是较长单词(信用/购买)的一部分还是单独存在,我都希望它们被退回。不过,它们将永远是大写字母。
编辑:
我正在寻找的只是我指定的那些列
但只有信用代码多于购买计划的客户的行。因此,如果他们在“c.things”中有 3 个不同的条目,例如“PHONE-CREDIT”或“OFFSET CRED”。和“c.things”中的 2 个不同条目,例如“12 M PURCH PLAN”或“PROMO PURCHASE 36”,我希望显示他们的信息。因此,当任何信用代码的行数大于任何购买计划的行数时。我当前的非简化查询已经设置为对所有客户进行排序,我只需要根据此过滤器指定哪些客户。
mysql - 带有连接表的 MySQL 嵌套选择
我假设有一种方法可以用 MySQL 做到这一点,但我在关系数据库方面的经验是有限的,所以我希望得到一些指导。
我有一个users
,registrations
和user_registrations
表。我想在我的表上创建一个SELECT
查询,该查询执行一个计算该用户的嵌套选择。users
user_registrations
因此,例如,我希望有这样的东西:
SELECT *, (SELECT COUNT() FROM user_registrations WHERE users.user_id = user_registrations.user_id) FROM users
我认为我对嵌套选择的理解是错误的,我希望有人能在这里指出我正确的方向。谢谢。
mysql - MySQL 从多个列中选择最新的
我有一个包含多个日期列的表,以下是我的表列的示例:tbl.user_id
, tbl.date_1
, tbl.date_2
,tbl.date_3
我需要提出一个将返回的查询,user_id
其中most_recent_date
大多数most_recent_date
是 date_1、date_2 和 date_3 之间的最新日期。我想我在这里需要一个嵌套选择,但我无法弄清楚它的逻辑。我希望有人可以在这里为我指明正确的方向。