假设我的数据库方案如下:
T_PRODUCT
id_product (int, primary)
two entries: (id_product =1) , (id_product =2)
T_USER
id_user (int, primary)
id_product (int, foreign key)
name_user (varchar)
two entries: (id_product=1,name_user='John') , (id_product=1,name_user='Mike')
如果我运行第一个查询来获取所有产品及其用户(如果有的话),则会得到以下信息:
SELECT T_PRODUCT.id_product, T_USER.name_user
FROM T_PRODUCT
LEFT JOIN T_USER on T_USER.id_product = T_PRODUCT.id_product;
>>
id_product name_user
1 John
1 Mike
2 NULL
对我来说看上去很好。现在,如果我想做同样的事情,除了我希望每行有一个产品,并使用级联的用户名(如果有任何用户,否则为NULL):
SELECT T_PRODUCT.id_product, GROUP_CONCAT(T_USER.name_user)
FROM T_PRODUCT
LEFT JOIN T_USER on T_USER.id_product = T_PRODUCT.id_product;
>>
id_product name_user
1 John,Mike
**expected output**:
id_product name_user
1 John,Mike
2 NULL
如果没有产品的用户,即使存在 LEFT JOIN ,GROUP_CONCAT也会阻止mysql为该产品生产线。
啊,找到我的答案:
使用 GROUP_CONCAT* 时,您永远不会忘记 GROUP BY 子句。我在第二个查询中失踪了。 *GROUP BYT_PRODUCT.id_product
如果有人像我一样心不在a,我将不提问题。
编辑 :
从这个答案中,我认为我还可以激活SQL模式ONLY_FULL_GROUP_BY
,以在丢失或不正确的GROUPBY的情况下强制MySQL引发错误。
当我遇到这个问题时,我正在温习动态编程。我设法用DP来确定子集和问题有多少解。 基于子集总和-恢复解决方案,我使用以下方法来检索子集,因为该集将始终被排序: 但是,由于它是一种贪婪的方法,因此它仅在每个子集的最大元素不同时才有效。如果两个子集具有相同的 max 元素,则它只返回具有较大值的子集。因此,对于总和为 10 的元素 [1, 2, 3, 4, 5],它只返回 当它应该回来的时候 我可以在w
CATALINA_OPTS=“-dcom.sun.management.jmxremote-dcom.sun.management.jmxremote.port=6969-dcom.sun.management.jmxremote.ssl=false-dcom.sun.management.jmxremote.authenticate=false${CATALINA_OPTS}” 并使用jcons
我有一个Spring批处理应用程序,它从DB表中读取记录并在Writer类中调用REST API以获取要缓存的数据。然而,我观察到并非线程池中的所有线程都在运行。它们只是以4-5的批处理运行,因为应用程序需要5小时才能进行120K调用。以下是Spring批处理上下文 任务执行者: 批量作业: 读卡器配置:请注意,数据源的连接数为20 min/max
目前,我有一个很大的决策表,其中包含许多条件/操作。决策表一直有效,直到我最近添加了一个新操作。它似乎没有执行。 通过setter更新以下字段: PRM_LIB01 PRM_LIB09 PRM_LIB10 但是,未更新PRM\U LIB18。即使我切换PRM\u LIB10和PRM\u LIB18的操作,也只有PRM\u LIB10的列得到更新。 因此,基于此,我希望它也执行setPRM\u LI
当使用https://www.elastic.co/guide/en/elasticsearch/reference/current/query-dsl-term-query.html描述的术语搜索时,我没有看到预期的结果 ElasticSearch版本为2.3.2:使用该版本创建数据: 此查询显示两条记录: 这个查询显示了一条记录,正如预期的那样: 但是使用不同的术语将不会产生记录: 不返回记录
我正在研究一个使用反射调用另一个方法的方法。然而,“其他方法”可以引发异常,我想用它的原始堆栈信息和内部异常来传播该异常。这只是因为使用反射的方法不应该处理异常,调用方应该处理异常。 下面是代码的简化版本: 该代码显然不会编译,因为Test方法(根据编译器)并不总是返回值。我可以在异常DispatchInfo之后添加一个return false。捕获,但我想知道是否有更好的方法来实现同样的目标。不