【问题标题】:Sql query showing additional results显示附加结果的 Sql 查询
【发布时间】:2018-11-30 16:04:38
【问题描述】:

我有

 SELECT s.* 
  FROM shop 
 WHERE s.family IN (SELECT s2.family FROM shop s2 WHERE (s2.money like "%k%"))

它确实返回包含 k 字母的“票”,但此外它还返回所有其他没有“k”的结果

这是商店的桌子:

+----+--------+-------+
| id | family | money |
+----+--------+-------+
|  1 |      1 |  card |
|  2 |      1 |Cheque |
|  3 |      2 |coins  |
|  4 |      2 |ticket |    
+----+--------+-------+

我正在使用

 IN (SELECT s2.family FROM shop s2 WHERE (s2.money like "%k%")); 

因为我想将结果显示为具有相同家族的一组行,所以我从另一个问题中得到了这个查询

【问题讨论】:

  • 将数字作为字符串进行比较没有意义..
  • 那还有哪些其他结果呢?向我们展示源数据样本和预期结果。老实说,您所声称的似乎不太可能。
  • 这只是一个例子,钱实际上是一个文本,我只是这样命名的
  • 调试是程序员工作的一部分。您是否尝试仅运行子查询并查看它返回的内容??? SELECT s2.family FROM shop s2 WHERE (s2.money like "%k%")

标签: php mysql sql


【解决方案1】:

你试过了吗:

SELECT * 
  FROM shop 
WHERE money LIKE "%text%";

您使用的是您之前发布的问题中的陈述,在这种情况下可能无效。

【讨论】:

  • 意义?你想按家庭分组什么?
  • @jason9 你说的家庭到底是什么意思?编辑问题以显示您想要的输出,您的意思不是很清楚。通常,如果您按它进行分组,是因为您想要计算记录,或者对值列求和,或者类似的。你想统计每个家庭的匹配记录吗?你研究过 SQL 中的 group by 查询吗?这将是一个非常简单的......你应该找到一个教程并尝试一下。这样你会学到更多。如果您仍然遇到困难,那么我们可以为您提供更多帮助
猜你喜欢
  • 2014-09-24
  • 1970-01-01
  • 2018-01-19
  • 1970-01-01
  • 2012-05-02
  • 1970-01-01
  • 1970-01-01
  • 2011-10-02
  • 2013-12-16
相关资源
最近更新 更多