Mysql SQL:选择在特定列中具有特定值的所有帐户行
我在表格1中有一些数据:Mysql SQL:选择在特定列中具有特定值的所有帐户行,mysql,sqlyog,Mysql,Sqlyog,我在表格1中有一些数据: ID1 ID2 Col3 Col4 ... x1 a1 a x1 a1 b x1 a2 c x2 a1 a x2 a2 b x2 a2 c x3 a3 a x3 a3 d x4 a3 d 我想显示accountsID1+ID2中Col3
ID1 ID2 Col3 Col4 ...
x1 a1 a
x1 a1 b
x1 a2 c
x2 a1 a
x2 a2 b
x2 a2 c
x3 a3 a
x3 a3 d
x4 a3 d
我想显示accountsID1+ID2中Col3字段中有“a”的所有行。
所以输出应该是
ID1 ID2 Col3 Col4 ...
x1 a1 a
x1 a1 b
x2 a1 a
x3 a3 a
x3 a3 d
这是我正在使用的查询:
SELECT *
FROM t1 table1
WHERE EXISTS
(
SELECT t2.ID1, t2.ID2
FROM t2 table1
where t1.ID1 = t2.ID1
AND t1.ID2 = t2.ID2
AND t2.Col3 = 'a'
)
这个查询花费了很多时间。有没有更快的办法
谢谢
我找到了一个解决方案:
我正在工作的桌子上有数百万行。因此,查询花费了很多时间。我能够通过在两个表上执行主键索引来提高速度
谢谢!!: 你能更好地解释你想要什么吗?因为您的示例结果看起来不像在col3中只说“a”,并且您的查询是多余的,我认为该查询和这将得到相同的结果:
SELECT * FROM t1 table1
你会带着所有的结果
SELECT * FROM table1 WHERE col3 = 'a'
你能更好地解释你想要什么吗?因为您的示例结果看起来不像在col3中只说“a”,并且您的查询是多余的,我认为该查询和这将得到相同的结果:
SELECT * FROM t1 table1
你会带着所有的结果
SELECT * FROM table1 WHERE col3 = 'a'
先试试这个:
SELECT DISTINCT a.*
FROM table1 AS a
JOIN table1 AS b
WHERE a.id1 = b.id1
AND a.id2 = b.id2
AND (a.col3 = 'a' or b.col3 = 'a')
如果您不想要,请尝试以下原始方法:
SELECT *
FROM table1 AS a
JOIN table1 AS b
WHERE a.id1 = b.id1
AND a.id2 = b.id2
AND (a.col3 = 'a' or b.col3 = 'a')
先试试这个:
SELECT DISTINCT a.*
FROM table1 AS a
JOIN table1 AS b
WHERE a.id1 = b.id1
AND a.id2 = b.id2
AND (a.col3 = 'a' or b.col3 = 'a')
如果您不想要,请尝试以下原始方法:
SELECT *
FROM table1 AS a
JOIN table1 AS b
WHERE a.id1 = b.id1
AND a.id2 = b.id2
AND (a.col3 = 'a' or b.col3 = 'a')
我认为这可能是解决办法 选择* 从t1开始 其中ID1在中,从t1中选择ID1,其中Col3类似于“a”
我认为这可能是解决办法 选择* 从t1开始 其中ID1在中,从t1中选择ID1,其中Col3类似于“a” 解决方案1 从第1列中选择,并从第2列中选择匹配行,但仅当表1包含col3中的正确数据时 从表1左键选择ID1、ID2、Col3,并在表1上连接表2。Col3=a 解决方案2 从第1列和第2列中的匹配行中选择,但仅当表1和表2在col3中包含正确的数据时 从表1左键选择ID1、ID2、Col3,将表1.Col3=a和表2.Col3=a上的表2连接起来 解决方案1 从第1列中选择,并从第2列中选择匹配行,但仅当表1包含col3中的正确数据时 从表1左键选择ID1、ID2、Col3,并在表1上连接表2。Col3=a 解决方案2 从第1列和第2列中的匹配行中选择,但仅当表1和表2在col3中包含正确的数据时
从表1左键选择ID1、ID2、Col3,将表1.Col3=a和表2.Col3=a上的表2连接起来 如果您只想要“a”,为什么您想要的输出有“b”和“d”?我想显示id1和id2组合的所有行,其中有一行Col3=a,在表1中,x1,a1组合有一行Col3=a,因此显示组合x1,a1的所有行参见JOIN。玩得开心。如果你只想要“a”,为什么你想要的输出有“b”和“d”?我想显示id1和id2组合的所有行,其中有一行Col3=a在表1中,x1,a1组合有一行Col3=a,因此显示组合x1,a1的所有行参见JOIN。祝你玩得开心。我在我写的查询中漏掉了一行。这应该可以清除东西。欢迎使用堆栈溢出!这并不能回答这个问题。若要评论或要求作者澄清,请在他们的帖子下方留下评论——你可以随时在自己的帖子上发表评论,一旦足够,你就可以在任何帖子上发表评论。如果您有一个相关但不同的问题,请参考这个问题,如果它有助于提供上下文。从表1中选择*似乎仍然相同,其中col3='a',因为t1和t2是同一个表,因此将匹配所有记录。我在编写的查询中遗漏了一行。这应该可以清除东西。欢迎使用堆栈溢出!这并不能回答这个问题。若要评论或要求作者澄清,请在他们的帖子下方留下评论——你可以随时在自己的帖子上发表评论,一旦足够,你就可以在任何帖子上发表评论。如果您有一个相关但不同的问题,请参考此问题,如果它有助于提供上下文。从表1中选择*似乎仍然是一样的,其中col3='a',因为t1和t2是同一张表,所以将匹配所有记录由于你问题的模糊性,我不得不猜测你到底想知道什么,所以如果我回答不正确,请不要否决我的投票,另外,我建议研究SQL连接,因为答案肯定与SQL连接有关,因为你的问题性质模糊,我不得不猜测你到底想知道什么,所以如果我回答不正确,请不要否决我的投票,我还建议研究SQL连接,因为答案肯定与SQL连接有关