Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/mysql/70.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Mysql 挑战:如何在随机或任意选择客户名称的同时列出与客户名称关联的所有信用卡_Mysql_Sql_Database - Fatal编程技术网

Mysql 挑战:如何在随机或任意选择客户名称的同时列出与客户名称关联的所有信用卡

Mysql 挑战:如何在随机或任意选择客户名称的同时列出与客户名称关联的所有信用卡,mysql,sql,database,Mysql,Sql,Database,我很难弄明白这个问题。假设有一个客户名单和一个给定名字的信用卡,我想显示与他们相关联的信用卡,但任意或随机选择它。我尝试手动对名称进行硬编码,但我希望查询随机获取名称 我尝试手动对名称进行硬编码,但我希望查询随机获取名称 MYSQL: SELECT credit_card.`CreditCard#` AS `Creditcard Number`, customer.customername AS `Name` FROM credit_card, customer, account WHERE

我很难弄明白这个问题。假设有一个客户名单和一个给定名字的信用卡,我想显示与他们相关联的信用卡,但任意或随机选择它。我尝试手动对名称进行硬编码,但我希望查询随机获取名称

我尝试手动对名称进行硬编码,但我希望查询随机获取名称

MYSQL:

SELECT credit_card.`CreditCard#` AS `Creditcard Number`,  customer.customername AS `Name`
FROM credit_card, customer, account
WHERE customer.CustomerName = "Bob white" ** 
这是硬编码的

AND holds_account.`Customer#` = customer.`Customer#`
AND credit_card.`CreditCard#` = holds_account.`CreditCard#`
我想显示与它们关联的信用卡,但任意或随机选择名称。 前客户表:A B A D

客户信用卡号码

         A: 12321432 
         B: 234324324
         A: 1231312213
         D: 234324433
答案应该是这样的:

A 12321432
A 1231312213
名称是随机抽取的。

如果要随机选择10条记录,可以使用ORDER BY RAND LIMIT 10


示例:按兰德限制10从客户订单中选择*首先,学习使用正确的联接语法编写SQL:

我认为不需要帐户,但如果需要,您可以添加帐户

如果希望随机选择所有信用卡客户,则在子查询中选择随机客户:

SELECT c.`CreditCard#`,  
       c.customername AS `Name`
FROM credit_card cc JOIN
     (SELECT c.*
      FROM customer c
      ORDER BY rand()
      LIMIT 10
     ) c
     ON cc.`Customer#` = c.`Customer#` ;
这假设所有客户都有信用卡。如果情况并非如此,那么您可能还需要包含该逻辑:

SELECT c.`CreditCard#`,  
       c.customername AS `Name`
FROM credit_card cc JOIN
     (SELECT c2.*
      FROM customer c2
      WHERE EXISTS (SELECT 1 FROM credit_card cc2 WHERE cc2.`Customer#` = c.`Customer#`)
      ORDER BY rand()
      LIMIT 10
     ) c
     ON cc.`Customer#` = c.`Customer#` ;

在其中customer.CustomerName=Bob white,而不是Bob white,我希望任意选择一个名称。我尝试使用Limit 1,但它有时会给出空结果,有时会给出所需的值。我就是这么做的:从客户、信用卡中选择*,account WHERE customer.CustomerName=根据RAND LIMIT 1从客户订单中选择customer.CustomerName,并持有_account.customer=customer.customer和credit_card.CreditCard=account.CreditCard当询问有关MySQL的问题时,为所有涉及的表显示创建表的名称确实很有帮助。
SELECT c.`CreditCard#`,  
       c.customername AS `Name`
FROM credit_card cc JOIN
     (SELECT c2.*
      FROM customer c2
      WHERE EXISTS (SELECT 1 FROM credit_card cc2 WHERE cc2.`Customer#` = c.`Customer#`)
      ORDER BY rand()
      LIMIT 10
     ) c
     ON cc.`Customer#` = c.`Customer#` ;