我有一个像这样的 mysql 表:
我正在尝试获取 nid
值的列表,其中 tid
是 19
AND 来自53、16 或 89
。根据当前表,我希望查询返回 10
,即 =19
(第 4 行)和 IN (53,16,89)
(最后一行)。
我可以将其作为 2 个独立的查询来获取,如下所示:
SELECT nid FROM {term_node} WHERE tid IN (53,16,89)
SELECT nid FROM {term_node} WHERE tid = 19
(term_node 是屏幕截图中的表)。我为此应用程序使用 PHP,因此我可以组合这两个查询的结果以获得所需的结果(即 10)。但我认为可能有一种方法可以从单个数据库查询中获取它。
我读到了 Union,但老实说我不知道如何使用它。 我希望我清楚这个问题并提前非常感谢你。
最佳答案
UNION
在这里帮不了你。你想要的是一个十字路口。一些数据库有一个 INTERSECT
做你想做的事的关键字,但不幸的是不是 MySQL。
你可以通过使用内连接得到你想要的:
SELECT DISTINCT TN1.nid
FROM term_node AS TN1
JOIN term_node AS TN2
ON TN1.nid = TN2.nid
AND TN2.tid = 19
WHERE TN1.tid IN (53, 16, 89)
在线查看它:sqlfiddle
关于php - 如何使用 SELECT 通过 IN 和 EQUAL 命令获取行?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12021739/