MySQL在单个查询中多次选择不同的wheres

时间:2013-12-18 09:30:00

标签: mysql sql syntax

首先,我被迫使用MySQL,尽管它被弃用了。我非常清楚这一事实。希望你们仍然可以帮助我使用我的sql语法。

我试图从一些不同的表中访问几个列。问题是,有些列需要与我需要的最后一列不同的where子句,并且最后一列的where子句需要来自查询其余部分的信息,所以我不能将其拆分成多个查询,我试过了。

我不能使用union,因为一个select语句选择四列,另一个选择一列。

查询:

(SELECT DISTINCT inventory.Quantity, itemtypes.Itemtypename, 
itemtypes.ItemtypeID, inventory.ItemID
FROM inventory JOIN itemtypes ON inventory.ItemtypeID = itemtypes.ItemtypeID
JOIN sets ON inventory.SetID = sets.SetID
WHERE inventory.ItemtypeID = itemtypes.ItemtypeID
AND itemtypes.Itemtypename = 'Set'
AND sets.SetID = '".$setid."')
UNION
(SELECT DISTINCT sets.Setname
FROM sets JOIN inventory ON sets.SetID = inventory.ItemID
WHERE sets.SetID = inventory.ItemID)

这是我试图使用的,没有成功。我似乎无法找到任何其他方式链接到不同的选择语句而不使用多个查询(由于我的PHP文件的结构,是不可能正确的)。如果只有这个问题得到解决,文件的其余部分将起作用。希望你们可以帮助我,如果有可能,请告诉我。如果您需要查看我的PHP代码,请告诉我。 $ setid派生自文件中的get,并包含数据库中存在的值。

1 个答案:

答案 0 :(得分:0)

可能是,你可以这样试试。它在SQL Server中工作正常。

SELECT TMP1.Quantity,TMP1.Itemtypename, TMP1.ItemtypeID, TMP1.ItemID, TMP2.Setname
FROM(
SELECT DISTINCT 
inventory.Quantity, 
itemtypes.Itemtypename, 
itemtypes.ItemtypeID, 
inventory.ItemID
FROM inventory 
JOIN itemtypes ON inventory.ItemtypeID = itemtypes.ItemtypeID
JOIN sets ON inventory.SetID = sets.SetID
WHERE inventory.ItemtypeID = itemtypes.ItemtypeID
AND itemtypes.Itemtypename = 'Set'
AND sets.SetID = '".$setid."'
) AS TMP1,
(
SELECT DISTINCT 
sets.Setname
FROM sets 
JOIN inventory ON sets.SetID = inventory.ItemID
WHERE sets.SetID = inventory.ItemID
) AS TMP2

希望这是你想要的。你的问题似乎很模糊。