假设我们有数据库:
-----------
| A -|- B |
|----|----|
| 1 | 1 |
| 1 | 2 |
| 2 | 1 |
-----------
A
和B
是主键。假设我们想要获得包含A
中1和2的元素的所有B
。
SELECT A FROM Table WHERE B = 1 AND B = 2;
上述操作失败,因为它永远不会成立,因为查询仅适用于单个记录。
SELECT A FROM Table WHERE B = 1 OR B = 2;
工作但错误地包含主键值2,它仅映射到B
中的1,而不是B
中的1和2。
答案 0 :(得分:4)
GROUP BY
解决方案,返回(1,2)中包含1个以上不同b值的所有内容:
select a from table
where b in (1,2)
group by a
having count(distinct b) > 1
或者,JOIN
解决方案:
select distinct a
from (select a from table where b = 1) t1
join (select a from table where b = 2) t2
on t1.a = t2.a
或INTERSECT
解决方案:
select a from table where b = 1
intersect
select a from table where b = 2
修改强>
GROUP BY
查询或许比HAVING count distinct
版本更快:
select a from table
where b in (1,2)
group by a
having max(b) <> min(b)
答案 1 :(得分:1)
您可以使用jarlh中的group by方法或使用'distinct'进行连接:
SELECT DISTINCT A
FROM Table AS T
WHERE EXISTS (SELECT 1 from Table WHERE Table.A = T.A and B = 1)
AND EXISTS (SELECT 1 from Table WHERE Table.A = T.A and B = 2)
答案 2 :(得分:1)
这样的事情(假设您需要按B中的特定ID进行过滤。
int counter = contextMenuStrip.Items.Count;
if (contextMenuStrip.Items.Count != (Items.Count))
{
contextMenuStrip1.Items.Add(Items.ElementAt(counter));
ItemInsertion(contextMenuStrip, Items);
}
return contextMenuStrip;
答案 3 :(得分:1)
试试这个
function field_ticker_callback() {
$ticker_value = get_option("ticker"); ?>
<input type="text" name="ticker" value="<?php echo $ticker_value; ?>" />
<?php
//echo "<input type="text" name="ticker" value="$ticker_value" />";
}
答案 4 :(得分:0)
A
不能作为主键,因为该列包含重复项。一种可能的解决方案:
SELECT * FROM (SELECT A, group_concat(B, ',') AS C FROM tab GROUP BY A) s WHERE s.C = "1,2";