我试图使用2个不同的标识符从3个不同的表中获取信息。但是,不是返回清晰的结果,而是使用NULL
而不是结果返回数据。而最奇怪的部分是,所有结果中有50%是好的,而另外50%则缺少一个字段。
SELECT inventory.exterior,
inventory.steamid,
inventory.icon,
inventory.id,
inventory.name,
inventory.steam_item_id,
items_prices.price,
bots.id AS botID
FROM inventory
LEFT JOIN items_prices
ON items_prices.id = inventory.steamanalyst_id
LEFT JOIN bots
ON bots.steamid = inventory.steamid
WHERE inventory.steamid IN ( 123, 123, 123, 123,
123 ... , 123 )
ORDER BY items_prices.price DESC
LIMIT 100 offset 0
所以这让我回答:
而不是NULL
s应该是数字,如1,3,7,9等。
语法一切都很好,表名,行等拼写没有错误。它不想收集所有数据并返回空值而不是数据
答案 0 :(得分:0)
NULL
是因为LEFT JOIN
。如果您不想看到它们,请使用INNER JOIN
:
SELECT i.exterior, i.steamid, i.icon, i.id, i.name, i.steam_item_id,
ip.price, b.id AS botID
FROM inventory i JOIN
items_prices ip
ON ip.id = i.steamanalyst_id JOIN
bots b
ON b.steamid = i.steamid
WHERE i.steamid IN ( 123, 123, 123, 123,
123 ... , 123 )
ORDER BY ip.price DESC
LIMIT 100 OFSET 0;
如果您想要所有记录,即使bots
表中没有匹配项,也只需使用LEFT JOIN
bots
。