Mysql SELECT查询返回双精度值
我遇到了SELECT查询问题,它不是返回给我一个值,而是给我太多问题。 下面的查询:Mysql SELECT查询返回双精度值
SELECT costi.id, costo, descrizione, categoria
FROM costi
INNER JOIN categorie
WHERE costi.id = 140
的从DB查询才对数据与两个表(COSTI和categorie) db structure
时遇到的问题是,: 如果,例如,我运行在PHP上查询我的管理员(通过输入代替$ _POST ['id'],代价为140的代价),而不是仅返回关联数据的一行,它返回两行(每个类别I已创建)。 query result
它们是相同的行,具有相同的值,但不同的类别字段除外。 我只需要返回一行正确的数据。
看起来应该是:
SELECT costi.id, costo, descrizione, categoria
FROM costi
INNER JOIN categorie
ON costi.id = categorie.id --note the join condition
WHERE costi.id = 140
寻找到你的查询结果..
你可以使用GROUP_CONCAT在一排得到的结果
SELECT costo, descrizione, group_concat(categoria)
FROM costi
INNER JOIN categorie
WHERE costi.id = 140
group by costo, descrizione
你需要使用JOIN语句中的外键加入2个表格
SELECT costi.id, costo, descrizione, categoria
FROM costi
INNER JOIN categorie ON categorie.id = costi.idcatagoria
WHERE costi.id = 140
现在查询知道哪两个表中的行是相互关联的
可以有2种方法:
-
使用下面的查询避免
INNER JOIN
:SELECT h.id, h.costo, h.descrizione, i.categoria FROM costi h, categorie i WHERE h.id = 140 and h.idcategoria=i.id
您可以使用
GROUP BY
与INNER JOIN
为什么你删除JOIN优先于AND? 2步回力沃利 – RiggsFolly
他们基本上是一回事。请参考https:// stackoverflow。com/questions/44917/explicit-vs-implicit-sql-joins –
但是,为什么要改变OP的代码,因为你认为没有好处 – RiggsFolly
指定加入的任何条件。 像table.id ...
指定条件,那么你会得到有限的结果
使用下面的查询避免INNER JOIN:
SELECT h.id, h.costo, h.descrizione, i.categoria
FROM costi h, categorie i
WHERE h.id = 140 and h.idcategoria=i.id
旧的方式加入...此方法可能会在将来被弃用 –
你不指定为参加任何条件。换句话说,你在连接之后缺少一个'on'语句。 – Utkanos
请指定一些条件加入。否则,它将像现在一样填充 –
如果您没有指定ON语句,那么INNER JOIN将作为CROSS JOIN工作,而不需要重复记录。没有人解释为什么会发生,所以我会解释它。 –